虚拟内存:不一致的malloc上的内存泄漏?

时间:2014-07-31 09:06:20

标签: memory-leaks

int main()
  {
    char * str = (char *) malloc(100);
    return 0;
  }

我被告知上面的代码会导致内存泄漏。但借助虚拟内存:

  1. 假设可执行文件为a.out,则a.out有自己的地址空间和页表。
  2. 如果a.out在没有free(str)的情况下终止,则会在a.out的虚拟内存空间中发生内存泄漏。
  3. 但是,在终止之后(或者在父进程收到终止进程之后?),有关a.out内存的数据结构也会被破坏。
  4. 这是否意味着内存泄漏完全不可能,只要进程终止?

1 个答案:

答案 0 :(得分:0)

在程序退出后发生的事情,C标准无话可说。

这是环保的事情。

但是,绝大多数情况都将malloc竞技场作为进程空间的一部分,并随着该进程自动发布。

内存泄漏通常与您无法再访问(例如,免费)的内存有关,因为您已经用其他值覆盖了指向它的指针,并且只有在进程存在时才会出现潜在问题