我陷入了刪除動態分配的int數組。 我有一個析構函數,我試圖使用循環來刪除數組的所有元素,並最終刪除它。 我在http://rextester.com/OTPPRQ8349的代碼 謝謝!如何刪除C++中的動態分配數組?
class MyClass
{
public:
int _a;
int* c;
int fRozmiar;
static int fIlosc;
MyClass() //default constructor
{
_a=0;
c = new int [9];
for(int i = 0; i<=9; i++)
{
c[i] = 1;
}
fIlosc++;
}
MyClass(int a1, int c1) // parametrized constructor
{
_a=a1;
c = new int [c1];
for(int i = 0; i<=c1; i++)
{
c[i] = rand();
}
fIlosc++;
}
MyClass(const MyClass &p2) // copy constructor
{
_a =p2._a;
c = p2.c;
fRozmiar = p2.fRozmiar;
fIlosc = fIlosc;
fIlosc++;
}
~MyClass(); // destructor
static int getCount() {
return fIlosc;
}
};
//Initialize static member of class
int MyClass::fIlosc = 0;
MyClass::~MyClass()
{
for(int i = 0; i<sizeof(c); ++i)
{
delete[] c[i];
}
delete[] c;
fIlosc--;
}
int main()
{
}
This works http://rextester.com/CMN81398 –
刪除必須與分配對稱!你一次分配數組,然後一次解除分配數組。 –
不相關:'sizeof(c)'不會給你'c'指向的緩衝區的大小。它會給你指針的大小,地址的大小,以字節爲單位。大部分時間不是很有用。 – user4581301