如果我使用 malloc() 为自己分配一块内存,将 NULL 分配给该块内但不在该块末尾的内存地址,然后在该块上调用 free() ,我会成功释放整个块,还是只有块的一部分达到 NULL?换句话说,free() 是否依赖 NULL 终止来标识内存块的结尾,还是有其他内部方法?
我知道这个问题只适用于为指针分配的内存(当 NULL 实际上意味着除所有位为零之外的东西时。)
例如:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char **myBlock = malloc(20 * sizeof(char *));
myBlock[10] = NULL;
free(myBlock);
return 0;
}
这个代码是免费的10 * sizeof(char *)
还是20 * sizeof(char *)
?
提前谢谢了!