int main()
{
char * str = (char *) malloc(100);
return 0;
}
我被告知上面的代码会导致内存泄漏。但借助虚拟内存:
a.out
,则a.out
有自己的地址空间和页表。a.out
在没有free(str)
的情况下终止,则会在a.out
的虚拟内存空间中发生内存泄漏。a.out
内存的数据结构也会被破坏。这是否意味着内存泄漏完全不可能,只要进程终止?
答案 0 :(得分:0)
在程序退出后发生的事情,C标准无话可说。
这是环保的事情。
但是,绝大多数情况都将malloc
竞技场作为进程空间的一部分,并随着该进程自动发布。
内存泄漏通常与您无法再访问(例如,免费)的内存有关,因为您已经用其他值覆盖了指向它的指针,并且只有在进程存在时才会出现潜在问题