|
코드 가드와 COM 컴퍼넌트 관련에서 버그가 좀 있는 것 같습니다.
제 경험담을 하나 말씀드리자면 코드 가드 옵션을 전부 체크 했다가 확인 누르고 체크를 전부 제거하고
다시 확인 누르고 필요한 옵션만 체크하니까 정상적으로 되더군요 ㅡ.ㅡ;
그리고 질문 내용을 보니 4바이트 엑세스 초과 메시지가 뜬다니~
Project Option에 Data Alignment 부분을 확인해보시기 바랍니다.
980/8 = 122.5
984/8 = 123
빌더는 기본값이 8 이예요.
방태윤 님이 쓰신 글 :
: 안녕하세요.?
:
: 코드가드를 돌리니까 아래와 같은 에러가 나왔습니다..
:
: 뭐 원래 크기가 980 인데 984 만큼 엑세스했다는거 같은데...어쩌라는건지..모르겠네요..내가 안그랬는데...ㅠㅠ
:
: 에러난 부분은
:
: TWebBrowser*w=new TWebBrowser(panel1);
:
: 입니다.
:
: 테스트로.... 이 부분(유닛)만 딸랑 놓고 프로그램 만들면 에러가 나지 않습니다만...
:
: directx등 인쿠루드가 많이 되 있는 메인프로그램에서만 이렇게 에러가 나옵니다.
:
: .
: .
: .
:
: Error 00001. 0x130C10 (Thread 0x0DA8):
: Method called on illegally casted object: Attempt to access 984 byte(s) at
: 0x0189F640. The 'this' pointer points to heap block 0x0189F640 which is only
: 980 bytes long.
: | c:\program files\borland\bds\4.0\include\vcl\SHDocVw.hpp line 1066:
: | public:
: | #pragma option push -w-inl
: |> /* TOleControl.Create */ inline __fastcall virtual TWebBrowser(Classes::TComponent* AOwner) : Olectrls::TOleControl(AOwner) { }
: | #pragma option pop
: | #pragma option push -w-inl
: Call Tree:
: 0x00425E2C(=proj2.exe:0x01:024E2C) c:\program files\borland\bds\4.0\include\vcl\SHDocVw.hpp#1066
: 0x004255EA(=proj2.exe:0x01:0245EA) C:\_ela\capture_web.cpp#35
: 0x00410595(=proj2.exe:0x01:00F595) C:\_ela\basic.cpp#1531
: .
: .
: .
:
: The memory block (0x0189F640) [size: 980 bytes] was allocated with SysGetMem
: Call Tree:
: 0x00504726(=proj2.exe:0x01:103726) system.pas#2648
: 0x004255EA(=proj2.exe:0x01:0245EA) C:\_ela\capture_web.cpp#35
: 0x00410595(=proj2.exe:0x01:00F595) C:\_ela\basic.cpp#1531
: .
: .
: .
: ------------------------------------------
:
: 감사합니다.
|