Tôi nghĩ rằng miễn phí trực tiếp là tốt nhất. Hành vi không xác định là điều tồi tệ nhất, vì vậy nếu bạn có quyền truy cập trong khi nó vẫn được xác định trong quy trình của bạn, hãy làm điều đó, có rất nhiều lý do chính đáng mà mọi người đã đưa ra cho nó.
Đối với việc ở đâu, hoặc liệu, tôi thấy rằng trong W98, câu hỏi thực sự là 'khi nào' (tôi không thấy bài đăng nào nhấn mạnh điều này). Một chương trình mẫu nhỏ (đối với đầu vào MIDI SysEx, sử dụng các khoảng trống khác nhau) sẽ giải phóng bộ nhớ trong bit WM_DESTROY của WndProc, nhưng khi tôi cấy nó vào một chương trình lớn hơn, nó đã bị lỗi khi thoát. Tôi cho rằng điều này có nghĩa là tôi đang cố gắng giải phóng những gì Hệ điều hành đã giải phóng trong một đợt dọn dẹp lớn hơn. Nếu tôi thực hiện trên WM_CLOSE, sau đó được gọi là DestroyWindow (), tất cả đều hoạt động tốt, thoát ngay lập tức.
Mặc dù điều này không hoàn toàn giống với bộ đệm MIDI, nhưng có điểm giống nhau ở chỗ tốt nhất là giữ nguyên quy trình, dọn dẹp đầy đủ, sau đó thoát. Với phần bộ nhớ khiêm tốn, điều này rất nhanh. Tôi thấy rằng nhiều bộ đệm nhỏ hoạt động và dọn dẹp nhanh hơn so với ít bộ đệm lớn hơn.
Có thể tồn tại các ngoại lệ, như ai đó đã nói khi tránh lấy lại các khối bộ nhớ lớn từ tệp hoán đổi trên đĩa, nhưng thậm chí điều đó có thể được giảm thiểu bằng cách giữ nhiều hơn và nhỏ hơn, không gian được cấp phát.