根据下面的代码,我会有内存泄漏吗?
class B {
int x;
}
class A {
int x;
int y;
B* tab[10];
A(int x, int y){
this->x = x;
this->y = y;
for (int i = 0; i < 10; i++){
tab[i] = new B;
}
}
~A(){
for (int i = 0; i < 10; i++){
delete tab[i];
}
}
int main(){
A a(10, 10);
return 0;
}根据我的理解,不会有从指针到B类的内存泄漏,但是我担心我通过覆盖默认析构函数行为导致了一些意外的泄漏,因为我的析构函数完全忽略了它们,所以不能从int x和int y中泄漏内存吗?
发布于 2018-01-21 00:55:37
根据我的理解,B类的指针不会出现内存泄漏
你说得对。
但是,我恐怕是因为覆盖默认析构函数行为而导致了一些意外的泄漏。
你不应该害怕。默认析构函数不能很好地处理指针。你的实现很好。
因为我的析构函数完全省略了它们,所以不能有从int x和int y泄漏的内存吗?
从原始的记忆泄漏?不,int不能泄密。int*可以,但不是一个普通的,好的,老的int。其他非指针类型也是如此。不是new编辑、malloced等的东西不会泄漏,也不需要协同响应delete或free
发布于 2018-01-21 00:58:55
不会出现内存泄漏,因为您没有使用new操作符来动态分配内存。相反,它将使用堆栈,在main函数的末尾,它将破坏您的对象。
https://stackoverflow.com/questions/48362628
复制相似问题