日期:2014-05-16 浏览次数:20887 次
#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;
}