cuốn sách gpt4 ai đã làm

C++: Không xóa đối tượng/luôn/rò rỉ bộ nhớ?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 00:59:48 28 4
mua khóa gpt4 Nike

lớpMyClass
{
// lớp trống không có lớp cơ sở
};

int main()
{
MyClass* myClass = MyClass mới();

return 0;
}

Đây có phải là rò rỉ bộ nhớ?

câu trả lời hay nhất

Đúng. Ngay cả khi lớp của bạn trống, bạn vẫn sẽ bị rò rỉ bộ nhớ. Có một số lý do cho việc này:

  • Phân bổ không bao giờ có độ dài bằng 0. Hệ điều hành của bạn sẽ không trả lại bộ đệm có 0 byte. Có kích thước phân bổ tối thiểu, nếu bạn phân bổ cấu trúc 0 byte thì đây là kích thước bạn sẽ nhận được. (Trên máy của tôi là 16 byte.)
  • Ngay cả khi có sự phân bổ độ dài bằng 0, đối tượng có kích thước tối thiểu là 1 byte trên hệ thống (trong đó một byte lớn bằng ký tự có cùng kích thước).
  • Ngay cả khi bạn nhận được phân bổ có độ dài bằng 0, hệ điều hành của bạn vẫn phải theo dõi phân bổ này. Để làm điều này, nó sử dụng nhiều byte hơn để ánh xạ địa chỉ tới các chi tiết phân bổ của nó. Điều này có chi phí bộ nhớ có kích thước không đổi mà bạn nhận được mỗi khi phân bổ bộ nhớ.

Vì vậy, ngay cả khi cấu trúc của bạn trống, mã của bạn sẽ rò rỉ ít nhất một byte bộ nhớ cùng với chi tiết phân bổ.

Giới thiệu về C++: Việc không xóa đối tượng/luôn/có gây rò rỉ bộ nhớ không? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/6804849/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress