|
Тема |
Re: Използване на string в dll [re: Любoзнaтeлko] |
|
Автор |
andrew_nikoloff (bugbuster) |
|
Публикувано | 07.06.06 19:58 |
|
|
В хелпа се казва следното:
If a DLL exports routines that pass long strings or dynamic arrays as parameters or function results (whether directly or nested in records or objects), then the DLL and its client applications (or DLLs) must all use the ShareMem unit. The same is true if one application or DLL allocates memory with New or GetMem which is deallocated by a call to Dispose or FreeMem in another module. ShareMem should always be the first unit listed in any program or library uses clause where it occurs.
ShareMem is the interface unit for the BORLANDMM.DLL memory manager, which allows modules to share dynamically allocated memory. BORLANDMM.DLL must be deployed with applications and DLLs that use ShareMem. When an application or DLL uses ShareMem, its memory manager is replaced by the memory manager in BORLANDMM.DLL.
Или отговорът на твоя въпрос е - не, в такъв случай не е нужно
Простичко казано въпросът е в това, че паметта, заделена за един динамичен обект от приложението може да бъде освободена, въпреки че тя се ползва в DLL-а. Това е по простата причина, че мемори мениджъра няма как да знае за референцията, която е в DLL-а. Обратното също е вярно. Именно това е ролята на Borland Memory Manager-а (BorlandMM.DLL) - да обедини управлението на паметта в двата (или повече) модули.
|
| |
|
|
|