Выделение / освобождение памяти (C ++ под Windows) - PullRequest
1 голос
/ 09 декабря 2011

Я работаю с Visual C ++.У меня есть исходный код библиотеки, назовите его Lib.Библиотека состоит из .lib и .dll.Я статически связываю .lib в моем основном проекте и помещаю .dll в каталог, где находится исполняемый файл.Я выделяю некоторую память в главном проекте (то есть загружаю файл в память), передаю его объекту .dll для его создания и, когда программа завершается, вызывает вызов объекта delete в этой памяти.

Кажется, это работает, но я не уверен.Что меня беспокоит, так это то, что я выделяю память в своем основном проекте и освобождаю память в .dll.Они в одной куче?

1 Ответ

0 голосов
/ 09 декабря 2011

Это работает, пока вы связываетесь с общими библиотеками MSVC во время выполнения выделения памяти. Тогда EXE и DLL совместно используют одну и ту же кучу.

Если вы нарушите эту зависимость, куча больше не будет использоваться совместно, а удаление объекта в другой куче испортит приложение.

...