说我有这样的程序:
int main(void) {
while(1) {
int some_int = rand(); //Some randomly generated integer
printf("%d\n", some_int);
}
return 1;
}
程序在无限循环中旋转,在每次迭代中声明some_int
。我知道如果你分配一些内存,你应该在以后释放它以避免程序中的内存泄漏,据我所知,C中没有垃圾收集器来释放未使用变量的内存。这是否意味着我的当前实现导致内存泄漏,因为我声明了一个我只使用一次的新整数?有没有办法“释放”它使用的内存?
你当然可以将变量声明移到无限循环之外,但这只是一个理论上的情况。
答案 0 :(得分:4)
本地变量具有自动存储持续时间。这意味着编译器将自动选择存储它的最佳位置,并在变量超出}
范围时自动清理。实际上,CPU可能会将变量存储在CPU寄存器中。所以你的代码很好。
您需要free
的唯一时间是使用已分配的存储时,通过显式调用malloc / calloc / realloc。像垃圾收集的Java这样的语言在后面使用隐式堆分配。 C不会这样做,这是C在设计上比Java快得多的众多原因之一。