Модератор: Модераторы
МОДУЛЬ lib_test013.so РУХНУЛ
Крах модуля: непойманное исключение,
Access Violation
Код по адресу 005AE48Eh
(исходник mo_module.pp
позиция 208:3)
превысил свои права на доступ
к какой-то из страниц виртуальной памяти.
Как правило такое случается при обращении
к несуществующим данным (ещё не созданному
или уже уничтоженному экземпляру класса,
неинициализированному указателю, пустой строке
или динамическому массиву нулевой длины и т.п.)
procedure GetModuleByAddr(addr: pointer; var baseaddr: pointer; var filename: string);
{$ifdef unix}
var
dlinfo: dl_info;
begin
FillChar(dlinfo, sizeof(dlinfo), 0);
dladdr(addr, @dlinfo);
baseaddr:= dlinfo.dli_fbase;
filename:= String(dlinfo.dli_fname);
if filename = ParamStr(0) then baseaddr:= nil;
end;
{$else}
var
Tmm: TMemoryBasicInformation;
TST: array[0..Max_Path] of Char;
begin
if VirtualQuery(addr, @Tmm, SizeOf(Tmm)) <> sizeof(Tmm)
then raise Exception.Create('The VirualQuery() call failed.');
baseaddr:=Tmm.AllocationBase;
TST[0]:= #0;
GetModuleFileName(THandle(Tmm.AllocationBase), TST, SizeOf(TST));
filename:= String(PChar(@TST));
if filename = ParamStr(0) then baseaddr:= nil;
end;
{$endif}
Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2