delete: hủy một object đơn (cấp bằngnew). Gọi 1 destructor rồi giải phóng vùng nhớ.delete[]: hủy một mảng (cấp bằngnew[]). Gọi destructor cho từng phần tử rồi giải phóng.
cpp
int* a = new int(5); delete a; // đơn
int* b = new int[10]; delete[] b; // mảngPhải khớp cặp: new↔delete, new[]↔delete[]. Trộn lẫn (dùng delete trên mảng, hoặc delete[] trên object đơn) là undefined behavior — có thể chỉ hủy 1 phần tử hoặc làm hỏng heap.
Modern C++: dùng std::vector hoặc std::unique_ptr<T[]> để khỏi tự tay delete[].