【发布时间】:2021-06-19 16:34:27
【问题描述】:
在以下代码中:
#include <iostream>
using namespace std ;
class TypeA {
public:
int a[10] ;
TypeA () {
int i ;
for ( i = 0; i != 9; i++) {
a[i] = double(i) ;
}
}
void printVal() {
int i ;
for ( i = 0; i != 9; i++) {
cout << a[i] << endl ;
}
}
~TypeA() {
//delete[] a;
cout << "TypeA destructor called"<<endl;
}
} ;
int main() {
TypeA * ptrA = new TypeA() ;
ptrA->printVal();
delete ptrA ;
return 0 ;
}
new TypeA() 在堆上实例化一个对象,并返回一个指针并保存在main() 中。我想知道a[] 的TypeA 是否存储在堆上?如果是这样,释放它的适当方法是什么?
【问题讨论】:
-
你能解释一下是什么让你产生了这样的印象吗(不是,顺便说一句)?
-
您不需要释放它 - C++ 将所有内容放入 Class 的内存中......因此分配一个新的 TypeA 为 int[10] 数组在内存空间中的其余部分提供了空间班级。删除 Class 时,会自动释放用于 int[10] 数组的内存。根本没有内存泄漏...
标签: c++ memory-management memory-leaks heap-memory