Re[7]: Проблема с высвобождением памяти в dll
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 13.03.09 04:13
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Если какая-то DLL собрана со статическим рантаймом,


и кстати уж определись внутри себя, толи ... динамический. Другого не бывает в .dll.
Автор: MasterZiv
Дата: 12.03.09
толи все таки бывает
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[8]: Проблема с высвобождением памяти в dll
От: MasterZiv СССР  
Дата: 13.03.09 08:32
Оценка:
Odi$$ey пишет:

> обосновать можешь?


Да, конечно. Если у тебя более одного Win32 модуля в системе,
все эти модули должны иметь один экземпляр CRTL. Иначе (хотя бы)
все нереентерабельные функции типа strtok ТУПО НЕ БУДУТ РАБОТАТЬ,
если они будут вызваны из двух РАЗНЫХ win32 модулей. Потому
что все статические данные CRTL должны быть в одном экземпляре
у приложения (думаю, напоминать, что они есть, не нужно: таблицы
открытых файлов, стандартные потоки ввода-вывода, локали и т.п.).
Это невозможно при сборке со статической CRTL --
их будет как минимум 2 у нескольких Win32-модулей.

Есть конечно и исключения, о которых я говорил — это если
всё использование CRT одним модулем замыкается только внутри одного
модуля. Для этого нужно специальным образом этот модуль проектировать.
Posted via RSDN NNTP Server 2.1 beta
Re[8]: Проблема с высвобождением памяти в dll
От: MasterZiv СССР  
Дата: 13.03.09 08:34
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>и кстати уж определись внутри себя, толи ... динамический. Другого не бывает в .dll.
Автор: MasterZiv
Дата: 12.03.09
толи все таки бывает


Я имел в виду, что в нормальном работающем приложении не бывает. Потому что оно будет неработающим, с учётом всего вышесказанного мной.
Re[9]: Проблема с высвобождением памяти в dll
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 13.03.09 10:39
Оценка:
Здравствуйте, MasterZiv, Вы писали:

>> обосновать можешь?


MZ>Да, конечно. Если у тебя более одного Win32 модуля в системе, все эти модули должны иметь один экземпляр CRTL. Иначе (хотя бы) все нереентерабельные функции типа strtok ТУПО НЕ БУДУТ РАБОТАТЬ, если они будут вызваны из двух РАЗНЫХ win32 модулей.


strtok действительно использует статические переменные при разборе и поэтому нельзя внутри цикла с strtok применять эту функцию к другой строке. Но каким образом эта ситуация еще может ухудшиться из-за разных CRT в разных модулях — я не вижу. Скорее уж наоборот — теперь можно будет сделать внутри цикла strtok одного модуля вызов функции другого модуля внутри которого будет свой strtok — и при этом их статические переменные никак друг на друга не повлияют.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[7]: Проблема с высвобождением памяти в dll
От: Danchik Украина  
Дата: 13.03.09 11:42
Оценка: 1 (1)
Здравствуйте, MasterZiv, Вы писали:

MZ>Danchik пишет:


>> Тут до Delphi еще далеко, он CPP не может заставить работать.


MZ>Да я вообще не очень понимаю, что он там делать собирается,

MZ>как он это дело в дельфу вставит ? Легче наверное новый язык
MZ>программирования изучить, чем это вот сделать.

Если изменит интерфейс экспортируемых функций то очень просто. Да хоть COM
Re[10]: Проблема с высвобождением памяти в dll
От: MasterZiv СССР  
Дата: 13.03.09 21:50
Оценка:
Odi$$ey пишет:

> строке. Но каким образом эта ситуация еще может ухудшиться из-за разных

> CRT в разных модулях — я не вижу. Скорее уж наоборот — теперь можно
> будет сделать внутри цикла strtok одного модуля вызов функции другого

У тебя какое-то очень наивное представление о CRTL. Выводы о возможности
улучшения её работы -- тоже. Что же, на каждый поток по CRT будем заводить,
или на каждую функцию ?
Posted via RSDN NNTP Server 2.1 beta
Re[11]: Проблема с высвобождением памяти в dll
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 14.03.09 06:32
Оценка:
Здравствуйте, MasterZiv, Вы писали:

>> строке. Но каким образом эта ситуация еще может ухудшиться из-за разных

>> CRT в разных модулях — я не вижу. Скорее уж наоборот — теперь можно
>> будет сделать внутри цикла strtok одного модуля вызов функции другого

MZ>У тебя какое-то очень наивное представление о CRTL. Выводы о возможности

MZ>улучшения её работы -- тоже. Что же, на каждый поток по CRT будем заводить,
MZ>или на каждую функцию ?

давай не будем обо всем сразу — потоки, наивные представления и проч. bla-bla-bla, можешь показать как у strtok съезжает крыша в dll со статической CRT?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.