Cách nào là đúng cách để cấp phát bộ nhớ qua new
trong hàm dựng C++. Cách thứ nhất trong danh sách đối số:Cách đúng để cấp phát bộ nhớ trong hàm dựng C++ là gì?
class Boda {
int *memory;
public:
Boda(int length) : memory(new int [length]) {}
~Boda() { delete [] memory; }
};
hoặc trong cơ thể của constructor:
class Boda {
int *memory;
public:
Boda(int length) {
memory = new int [length];
}
~Boda() { delete [] memory; }
};
Cảm ơn, Boda Cydo.
Tôi biết đây chỉ là mã ví dụ, nhưng khi được viết là lớp có vấn đề quản lý bộ nhớ nghiêm trọng (ctor sao chép mặc định sẽ cho phép bộ nhớ được deallocated nhiều lần). sử dụng RAII, sử dụng con trỏ thông minh hoặc thùng chứa. với RAII thích hợp, bạn có thể thấy bạn không cần phải tự xóa mình ở tất cả –
@jk: Thứ hai, tôi thích 'std :: vector'. –
fredoverflow