![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выделить память в dll
Test_unit © (2011-02-07 18:41:00)Здравствуйте. Такая проблема. Имеется буффер pbyte. Я хочу чтоб он иницелизировался в моей длл. Вроде как иницилизируется но при фреемем прога валится. Что я делаю не так? Вот код.
/////////////////////Project2.dll/////////////////
procedure test (Buff:pbyte;Size:integer) ;STDCALL;
begin
if Buff <> nil then Buff := nil;
ReAllocMem(Buff, Size);
end;
///////////////////////////////////////////////////
////////////////////////Программа///////////////////////
procedure test(Buff:pbyte;Size:integer); STDCALL; external 'Project2.dll';
........
procedure TForm1.Button1Click(Sender: TObject);
var
P:pbyte;
begin
test(p,1000000);
freemem(p);
p:=nil;
end;
_Юрий (2011-02-07 19:27:00) [1]
> Вроде как иницилизируется но при фреемем прога валится.
> Что я делаю не так?
У проги и библиотеки по умолчанию разные менеджеры памяти.
Ты у одного менеджера запросил память, а другому приказываешь ее освободить.
Игорь Шевченко (2011-02-07 18:51:00) [2]
> Читал..
Еще раз прочитай.
> Тут как быть?
HeapAlloc/HeapFree, VirtualAlloc/VirtualFree
Test_unit (2011-02-07 18:47:00) [3]Это про borland.dll ? Читал.. А если я захочу заюзать свою длл в другом проекте на другом ЯП. Тут как быть? Постоянно с собой таскать эту длл?
Игорь Шевченко (2011-02-07 18:43:00) [4]
> Что я делаю не так?
Не читаешь комментарий в проекте DLL