检测内存泄漏

Detecting memory leaks

考虑以下代码:

int main(){
    A c;
    A array[5];
    A *ptr;
}

假设 class A 没有内存泄漏。上面的代码有没有内存泄漏?

我的想法:

这六个A类型的对象的变量carray会得到allocated/instantiated.

ptr 变量未分配任何内容,因此不会在那里创建任何内容。

对于carray,在程序退出之前,它们的析构函数都会被调用。

所以,应该不会有任何内存泄漏。

我不确定我上面的推理。

此外,array 的内存是否会被分配 - 离开堆栈、离开堆或全局内存 space?

没有内存泄漏,因为没有不匹配

  1. malloc / free
  2. new / delete
  3. new[] / delete[]

数组array[5]自动存储时长。这是“在堆栈上”的正式术语。从概念上讲,在 ptr 超出范围后,它在 main() 的右大括号 } 处超出范围。