日期:2014-05-16 浏览次数:20678 次
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <linux/mman.h> int main(int argc, char **argv) { void *s,*x; x=malloc(8); s=(void *)mremap(x,8,8,0); return 0; }
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <linux/mman.h> int main(int argc, char **argv) { void *s,*x; x=malloc(8); s=(void *)mremap(x,8,8,0); perror("mremap"); printf("old 0x%x new 0x%x\n",x,s); return 0; }
------解决方案--------------------
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <linux/mman.h> int main(int argc, char **argv) { void *s,*x; x=malloc(8192); x = (unsigned int )x + 0x1000; x = (unsigned int )x & 0xfffff000; s=(void *)mremap(x,4000,8,0); perror("mremap"); printf("old 0x%x new 0x%x\n",x,s); return 0; }