也许这个问题相当愚蠢,但我不知道如何正确调用具有这种内存分配的析构函数:
Class_Name* arr[3];
arr[0] = new Class();
arr[1] = new Class(2);
arr[2] = new Class(3, 3);
像这样:
delete[] arr;
或者像这样:
for(int i=0; i<3; ++i)
delete arr[i];
还是以其他方式?
也许这个问题相当愚蠢,但我不知道如何正确调用具有这种内存分配的析构函数:
Class_Name* arr[3];
arr[0] = new Class();
arr[1] = new Class(2);
arr[2] = new Class(3, 3);
像这样:
delete[] arr;
或者像这样:
for(int i=0; i<3; ++i)
delete arr[i];
还是以其他方式?
如果你这样调用:
Class * * arr = new Class * [ 3 ] ;
,然后分配内存:那么首先你需要在一个循环中再次释放内存:
然后使用 . 从三个指针中释放内存
delete [ ] arr ;
。该命令将首先调用三个指针的析构函数(也就是说,它什么也不做,因为指针没有析构函数),然后释放它们的内存。由于您很可能在堆栈上有一个数组,因此您无需手动从该数组中释放内存,剩下的就是
arr[i]
通过循环从空闲内存中删除对象。