int main()
{
char * str = (char *) malloc(100);
return 0;
}
有人告诉我上面的代码将导致内存泄漏。但是借助虚拟内存:
a.out
,则a.out
具有其自己的寻址空间和页表。a.out
不终止则free(str)
在其a.out
虚拟内存空间中发生内存泄漏。a.out
也会破坏有关的内存的数据结构。这是否意味着只要进程终止,就完全不可能发生内存泄漏?
C标准没有说明程序退出后会发生什么。
那是环境问题。
但是,绝大多数情况都将malloc
舞台作为过程空间的一部分,该过程随过程自动魔术地释放。
内存泄漏通常与您无法再访问(例如,空闲)的内存有关,因为您已经用其他一些值覆盖了指向它的指针,并且只有在进程存在时,这才可能成为潜在的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句