可能重复:
malloc() 和 free() 如何工作?
我遇到了一个奇怪的问题,我真的不确定为什么它不起作用。
我在 Xcode 中有以下代码:
void *ptr = malloc(1024 * 1024 * 100);
memset(ptr, 0, 1024 * 1024 * 100);
free (ptr); //trace this line
ptr = malloc (1024 * 1024 * 100);
memset(ptr, 0, 1024 * 1024 * 100);
free (ptr); //trace this line
我在每个 free() 行上都设置了一个断点,当我跟踪程序时,free 并没有真正释放 100mb。但是,如果我将数字从 100 更改为 500(分配 500mb 两次),memset 500mb, free() 工作正常。为什么?