免费功能不起作用

时间:2014-04-14 13:42:30

标签: c memory-leaks

我有以下C代码。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    while (1) {
        int *test = malloc(sizeof(*test));
        test = 500;
        free(test);
    }
    return 0;
}

免费功能似乎不起作用,因为分配的内存在几秒钟内增长到2GB。有什么问题?

3 个答案:

答案 0 :(得分:8)

您只能free指针返回malloc

在编写test = 500时,您已更改test指向的内存位置。试图释放未定义的行为

要为分配的整数赋值, derefence *test = 500;

答案 1 :(得分:5)

test = 500;

这改变了内存地址。因此,您分配的原始内存从未被释放。

也许你打算写:

*test = 500;

答案 2 :(得分:3)

您正在覆盖 test 指针,而不是 test 指向的值。代码应更正如下:

*test = 500;

而不是

test = 500;