检测内存泄漏
Detecting memory leaks
考虑以下代码:
int main(){
A c;
A array[5];
A *ptr;
}
假设 class A
没有内存泄漏。上面的代码有没有内存泄漏?
我的想法:
这六个A
类型的对象的变量c
和array
会得到allocated/instantiated.
ptr
变量未分配任何内容,因此不会在那里创建任何内容。
对于c
和array
,在程序退出之前,它们的析构函数都会被调用。
所以,应该不会有任何内存泄漏。
我不确定我上面的推理。
此外,array
的内存是否会被分配 - 离开堆栈、离开堆或全局内存 space?
没有内存泄漏,因为没有不匹配
malloc
/ free
new
/ delete
new[]
/ delete[]
数组array[5]
有自动存储时长。这是“在堆栈上”的正式术语。从概念上讲,在 ptr
超出范围后,它在 main()
的右大括号 }
处超出范围。
考虑以下代码:
int main(){
A c;
A array[5];
A *ptr;
}
假设 class A
没有内存泄漏。上面的代码有没有内存泄漏?
我的想法:
这六个A
类型的对象的变量c
和array
会得到allocated/instantiated.
ptr
变量未分配任何内容,因此不会在那里创建任何内容。
对于c
和array
,在程序退出之前,它们的析构函数都会被调用。
所以,应该不会有任何内存泄漏。
我不确定我上面的推理。
此外,array
的内存是否会被分配 - 离开堆栈、离开堆或全局内存 space?
没有内存泄漏,因为没有不匹配
malloc
/free
new
/delete
new[]
/delete[]
数组array[5]
有自动存储时长。这是“在堆栈上”的正式术语。从概念上讲,在 ptr
超出范围后,它在 main()
的右大括号 }
处超出范围。