百度试题 题目delete与 delete []区别: 相关知识点: 试题来源: 解析 答:delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数。
【答案】:delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数。
不过不管使用delete还是delete[]那三个对象的在内存中都被删除,既存储位置都标记为可写,但是使用delete的时候只调用了pbabe[0]的析构函数,而使用了delete[]则调用了 3 个Babe对象的析构函数。 你一定会问,反正不管怎样都是把存储空间释放了,有什么区别。 答:关键在于调用析构函数上。此程序的类没有使用操作系统...
delete 与 delete [] 区别 delete 只会调用一次析构函数,而 delete[] 会调用每一个成员的析构函数。 在More Effective C++ 中有更为详细的解释:“当 delete 操作符用于数组时,它为每个数组元素调用析构函数,然后调用 operator delete 来释放内存。” delete 与 New 配套, delete [] 与 new [] 配套 。 对...
这两是等价的,没有什么区别, 但是如果是一个动态分配数据的数据类型,就不同了,delete[]在释放数组控件前,对数组中每一个对象调用析构函数,而delete择仅仅是释放指针所指的控件 例如 class Student { private: char* name; int age; public: Student() { name = new char[100]; }; ...
A* pA = new A[10]; 则delete pA;只是删除了第一个类,相当于delete &pA[0]; delete[] pA;删除整个数组,相当于 for(int i=0;i<10;i++) { delete &pA[i]; } 简单来说,用new 分配的内存用delete删除 用new[]分配的内存用delete[]删除 ...
delete负责调用 类的析构函数的。普通的对象的delete 和delete{]确实是一样的。当类中有析构函数的时候,你就看到不同了。编译器根据是delete还是delete『} 来生成调用不同次数的 析构函数。而如果还是用delete来删的话,运行时就会出错了。试一下下面这个代码:include<iostream> using namespace std...
Del是Delete的略写,作用一样,位置不同,使用更快捷方便。
那么当我们用new[]分配的对象是基本数据类型的时候,用delete和delete[]没什么区别,都可以。但是当用new[]分配的对象是自定义类型的时候,必须要用delete[],这样它才会调用每个对象的析构函数,除非你的析构函数没有做任何事。 总结一句话:使用new得来的空间,用delete来释放;使用new []得来的空间,必须用delete []...