我有以下C代码。
#include <stdio.h>
#include <stdlib.h>
int main()
{
while (1) {
int *test = malloc(sizeof(*test));
test = 500;
free(test);
}
return 0;
}
免费功能似乎不起作用,因为分配的内存在几秒钟内增长到2GB。有什么问题?
答案 0 :(得分:8)
您只能free
指针返回malloc
。
在编写test = 500
时,您已更改test
指向的内存位置。试图释放未定义的行为。
要为分配的整数赋值, derefence :*test = 500
;
答案 1 :(得分:5)
test = 500;
这改变了内存地址。因此,您分配的原始内存从未被释放。
也许你打算写:
*test = 500;
答案 2 :(得分:3)
您正在覆盖 test 指针,而不是 test 指向的值。代码应更正如下:
*test = 500;
而不是
test = 500;