Sự khác nhau giữa delete và delete[]

      Comments Off on Sự khác nhau giữa delete và delete[]

delete hủy bộ nhớ cấp phát và gọi hàm deconstructor của object đó.

delete[] hủy bộ nhớ được cấp phát và gọi hàm deconstructor của từng object trong mảng.

ví dụ:

    SomeClass * pObject = new SomeClass;
    SomeClass * pObjects = new SomeClass[n];
    int pNotObjects = new int[m];
    ...
    delete pObject; // Correct; calls SomeClass destructor and frees the memory
    delete pNotObjects; // Correct too; just frees the memory
    delete [] pNotObjects; // Also correct
    delete pObjects; // Incorrect: frees the memory without calling destructors
    delete [] pObjects; // Correct; calls the destructor of each object