Trước hết, có ít nhất 4-5 chủ đề có chủ đề tương tự về SO. Tôi đọc từng người trong số họ và tôi không cảm thấy họ thực sự giúp tôi với vấn đề cụ thể này. Nếu ai đó tìm thấy một câu hỏi trùng lặp tôi xin lỗi. Tôi đã thực hiện chia sẻ của tôi tìm kiếm trước khi tôi đăng này, vì nó có vẻ như một câu hỏi rất phổ biến.Cách thay thế đúng nhà khai thác mới và xóa toàn cầu
Tôi đang sử dụng Visual Studio .NET 2003 trên Windows 7.
Tôi có quá tải riêng của tôi về mới/xóa điểm đó để tùy chỉnh của riêng tôi gọi đến malloc() và free() cho chẩn đoán. Quá tải mới/xóa của tôi nằm trong tệp tiêu đề mà tôi đã đưa vào một vài tệp.
Vấn đề là, cơ sở mã là khá nhiều spaghetti và không có cách nào dễ dàng để đảm bảo các quá tải này được mọi thứ sử dụng. Có bao gồm các thư viện của bên thứ ba là hộp đen. Chúng tôi cũng sử dụng STL ở khắp mọi nơi.
Trong các thử nghiệm của tôi, tôi thấy rằng STL vẫn đang trộn các cuộc gọi đến/xóa mới và các cuộc gọi mới/xóa MSVC chuẩn.
Có vẻ như thực tế không bao gồm tệp tiêu đề của tôi trong hàng nghìn tệp khác, quá trình này sẽ mất quá nhiều thời gian. Bất cứ ai có thể cung cấp một số lời khuyên về cách đúng và hiệu quả quá tải mới/xóa trên toàn cầu để mọi thứ sử dụng quản lý bộ nhớ tùy chỉnh của tôi?
Nếu bạn xác định các nhà khai thác trên toàn cầu trong một tiêu đề trước khi biên soạn mà nên bao gồm mặt đất nhất. Cách khác, bạn có thể sử dụng chức năng heap CRT nếu điều này là để phát hiện rò rỉ bộ nhớ. – AJG85