实现malloc和free

时间:2014-05-28 18:52:50

标签: c

我对malloc后面跟free

有疑问
char *p = (char *) malloc(100);
p++;
free(p);

在上面的场景中free(p)会释放多少字节的内存?是99还是100?

1 个答案:

答案 0 :(得分:6)

这是未定义的行为。 free()的联合帮助页(强调我的):

  

free()函数释放ptr指向的内存空间,   必须由之前调用malloc(),calloc()或   realloc的()。否则,或者如果之前已经调用了free(ptr),   发生未定义的行为。如果ptr为NULL,则不执行任何操作。