2009-12-25 28 views

Trả lời

18

Chúng có thể đề cập đến các chức năng cấp phát bộ nhớ thô operator newoperator delete.

Khi bạn gọi một phiên bản cụ thể của vị trí mới thể hiện (tức là mới thể hiện với các thông số phụ; tất cả đều được chính thức gọi là vị trí hình thức new) và chức năng phân bổ bộ nhớ operator new thành công, nhưng quá trình thất bại sau đó vì một số lý do khác (các nhà xây dựng ném), việc thực hiện phải hủy bỏ quá trình và tự động giải phóng bộ nhớ được cấp phát bằng cách gọi phiên bản thích hợp của operator delete. "Phiên bản phù hợp" của operator delete trong trường hợp này là phiên bản có cùng một bộ thông số như hàm operator new trước đây được sử dụng để cấp phát bộ nhớ (ngoại trừ tham số đầu tiên, tất nhiên).

Điều này cũng áp dụng cho nothrow phiên bản của operator new. Khi bạn sử dụng hình thức biểu thức mới nothrow, nó gọi một phiên bản nothrow của operator new và sau đó xây dựng đối tượng trong bộ nhớ được cấp phát. Nếu nhà xây dựng không thành công (ném), việc triển khai bộ nhớ phát hành biểu thức mới được phân bổ với sự giúp đỡ của nothrow phiên bản operator delete. Đây là lý do duy nhất cho phiên bản operator delete này tồn tại.

Nói cách khác, phiên bản nothrow của operator delete tồn tại cho các mục đích nội bộ rất cụ thể. Bạn không nên bình thường muốn gọi nó là chính mình và, có thể, bạn không thực sự cần phải biết về sự tồn tại của nó. Tuy nhiên, bạn nên biết rằng vì những lý do được mô tả ở trên, bất cứ khi nào bạn tạo phiên bản operator new của riêng mình với thông số bổ sung, bạn nên cung cấp phiên bản phù hợp operator delete với cùng một tập hợp các thông số bổ sung.

Các vấn đề liên quan