虚拟内存:未释放的malloc上的内存泄漏?

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

有人告诉我上面的代码将导致内存泄漏。但是借助虚拟内存:

  1. 假设可执行文件为a.out,则a.out具有其自己的寻址空间和页表。
  2. 如果a.out不终止则free(str)在其a.out虚拟内存空间中发生内存泄漏
  3. 但是,在终止之后(或在父进程重新获得终止的进程之后?),a.out也会破坏有关的内存的数据结构

这是否意味着只要进程终止,就完全不可能发生内存泄漏?

紫罗兰色

C标准没有说明程序退出会发生什么

那是环境问题。

但是,绝大多数情况都将malloc舞台作为过程空间的一部分,该过程随过程自动魔术地释放。

内存泄漏通常与您无法再访问(例如,空闲)的内存有关,因为您已经用其他一些值覆盖了指向它的指针,并且只有在进程存在时,这才可能成为潜在的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章