![]() |
|
|
![]()
|
|
| wasya |
|
|||
|
Unregistered |
Подскажите пожалуйста!!!!
Памать которая выделяется в DLL, может освобождаться приложением с которым динамически связана эта DLL ??? |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: нет Всего: 34 |
если знать хедер того самого куска памяти который был выделен то нет проблем в контексте одного процесса
-------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 1 Всего: 41 |
Проблема может быть. Зависит от того, какими средствами выделять/освобождать память. Если это стандартные библиотеки языка (типа new/delete), то менеджеры памяти реализованное этими библиотеками у dll и еxe вполне могут оказаться разными - вот тут-то проблемка и возникнет. -------------------- Волны гасят ветер... |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 1 Всего: 44 |
А можно подробнее, про проблемку, которая может возникнтуть? И в чем прикол разной реализации new/delete? (зачем это сделано)? А еще лучше статейку по этому поводу скинь. -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: нет Всего: 34 |
проверяли
все одно сводится к GlobalAlloc ей подобной ))) -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Fantasist |
|
||||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 1 Всего: 41 |
Она может и сводиться, но управление куском памяти выделенной этой GlobalAlloc может производиться по разному. Я, лично, в исходниках не смотрел, может там и все нормально, но от компилятора к компилятору (и даже от версии к версии) это может меняться.
Прикол в том, что встроенный менеджер памяти может управлять выделением и возвращением памяти не на столько очевидно, как нам может казаться из кода. Например менеджер может не обращаться каждый раз (при каждом вызове new) к системе за выделением памяти, а выделять сразу большой кусок и от него помаленьку раздавать. Тогда и delete не будет физически отчищать память, а возвращать ее менеджеру. В этом случае если память выделенна одним менеджером, а вернута другому, то первый навсегда потеряет этот кусок, а второй будет очень удивлен что ему вернули память, которую он не выделял. Я исходники VC не смотрел, поэтому не гарантирую, что там что-то типа этого реализованно. Кроме того грамотно реализованный менеджер может находить уже дейсвующий экземпляр и с ним договариваться даже если они разнесены по разным модулям. С другой стороны, любой программист может реализовать свой менеджмент памяти путем перегрузки операторов new/delete и в этом случае может возникнуть та же проблема. То есть проблема може возникнуть, а может и не возникнуть. Но, хороший стиль программирования подразумевает, что тот модуль который выделяет память должен ее же и освобождать. Если только не реализованно сотвествующее управление памятью чтобы этого избежать. -------------------- Волны гасят ветер... |
||||
|
|||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 1 Всего: 44 |
Спасибо
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |