Я думаю, що пряме звільнення найкраще. Невизначена поведінка - це найгірше, тому, якщо у вас є доступ, хоча це все ще визначено у вашому процесі, зробіть це, є багато вагомих причин, які люди давали для цього.
Щодо того, де чи чи я, я виявив, що у W98 справжнім питанням було "коли" (я не бачив публікації, яка б це наголошувала). Невелика програма-шаблон (для введення MIDI SysEx, використовуючи різні пропущені місця) звільнила би пам'ять у біті WM_DESTROY WndProc, але коли я пересадив це на більшу програму, вона вийшла з ладу при виході. Я припускав, що це означає, що я намагався звільнити те, що ОС вже звільнила під час більшого очищення. Якщо я зробив це на WM_CLOSE, який потім називався DestroyWindow (), все працювало нормально, миттєвий чистий вихід.
Хоча це не зовсім те саме, що MIDI-буфери, є схожість у тому, що найкраще тримати процес у цілості, повністю очистити, а потім вийти. При скромних фрагментах пам'яті це дуже швидко. Я виявив, що багато маленьких буферів працювали швидше в процесі експлуатації та очищення, ніж менше великих.
Можуть існувати винятки, як хтось сказав, уникаючи витягування великих фрагментів пам'яті з файлу підкачки на диску, але навіть це може бути зведено до мінімуму, зберігаючи більше і менше виділених пробілів.