1

With EurekaLog, I found this Access Violation in my application:

 2.2 Address       : 00404A77
 2.5 Type          : EAccessViolation
 2.6 Message       : Access violation at address 00404A77 in module 'MyApp.exe'. Write of address 4F4F4E30.

Callstack:

--------------------------------------------------------------------------------------------
|Address |Module        |Unit           |Class          |Procedure/Method         |Line    |
--------------------------------------------------------------------------------------------
|*Exception Thread: ID=3748; Priority=??; Class=                                           |
|------------------------------------------------------------------------------------------|
|00404A77|MyApp.exe     |               |               |                         |        |
|75E1CD33|kernel32.dll  |               |               |LocalAlloc               |        |
|70BB2C72|MSVCR80.dll   |               |               |__set_flsgetvalue        |        |
|76F16FF2|ntdll.dll     |               |               |KiUserExceptionDispatcher|        |
|0064FC04|MyApp.exe     |uib.pas        |               |EventCallback            |4430[5] |
|70BB29A0|MSVCR80.dll   |               |               |_endthreadex             |        |
|75E1ED6A|kernel32.dll  |               |               |GetDriveTypeW            |        |
|------------------------------------------------------------------------------------------|

And the code from uib.pas:

procedure EventCallback(UserData: Pointer; Length: Smallint; Updated: PAnsiChar); cdecl;
begin
  if (Length > 0) and (Updated <> nil) then
  if (Assigned(UserData) and Assigned(Updated)) then
  with TUIBEventThread(UserData) do
  begin
    Move(Updated^, FResultBuffer^, Length);
    FQueueEvent := True;
    FSignal.SetEvent;
  end;
end;

Any idea what could be wrong and how to fix it?

4

1 回答 1

1

根据评论,引发访问冲突的行是调用Move. 因此,诊断程序告诉您指向目标缓冲区的指针未指向长度至少为 的有效缓冲区Length

换句话说,您的问题是:

  • FResultBuffer是无效指针,或
  • 引用的缓冲区FResultBuffer不够长。
于 2014-03-14T06:55:44.807 回答