C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[37685] Re:왜 이런 현상이...ㅡㅡ??
남병철.레조 [lezo] 886 읽음    2004-10-20 08:53
AnsiString __fastcall ShowMessage(AnsiString msg)
에서 일단 TEScnro::가 빠져있습니다.
그리고 ShowMessage는 빌더에서 지원해 주는 함수인데 선언을 보시면 extern으로 되어있습니다.
어떤 프로젝트로 만드신 것인지 모르겠지만, 재정의 된게 아닌가 생각됩니다.



이상해 님이 쓰신 글 :
: 코드 가드를 이용했더니 다음과 같은 에러를 뱉어냅니다...
:
: Error 00164. 0x100C00 (Thread 0x0CA0):
: Method called on invalid object: Attempt to access 4 byte(s) at 0x00000000.
: Call Tree:
:    0x00414B8A(=AAAA.exe:0x01:013B8A) C:\test\EScnro.cpp#77
:        ===> 에러가 EScnro에서 발생해서 AScnro까지 던져주고 있습니다...
:    0x0043E67D(=AAAA.exe:0x01:03D67D) C:\test\DScnro.cpp#289
:    0x004497E0(=AAAA.exe:0x01:0487E0) C:\test\CScnro.cpp#132
:    0x0044A9E7(=AAAA.exe:0x01:0499E7) C:\test\BScnro.cpp#293
:    0x0044A30E(=AAAA.exe:0x01:04930E) C:\test\AScnro.cpp#229
:    0x400EE4E7(=vcl60.bpl:0x01:03D4E7)
: ------------------------------------------
: 위와 같은 에러를 수백개 뱉어내네요....메모리도 콸콸 세고.......-_-;;
: 문제는 invalid object라는 에러인데.... EScnro.cpp는 객체를 생성을 하지않고 쓰고 있습니다
: 여기서 제가 의문이 드는것은 객체 생성을 하지 않고 다음과 같이 사용했을때
: 런타임시에 객체가 없다고 에러를 뱉어야 하는데 어떻게 빌더가 에러없이 도는지 이해가 가지 않습니다...
:
: ============header 파일====================
:
: #ifndef EScnroH
: #define EScnroH
:
: //---------------------------------------------------------------------------
: class TEScnro
: {
: private:    // User declarations
: public:        // User declarations
:     __fastcall TEScnro();
:     AnsiString __fastcall ShowMessage(AnsiString msg);
: };
: //---------------------------------------------------------------------------
: extern PACKAGE TEScnro *EScnro;
: //---------------------------------------------------------------------------
:
: #endif
:
:
: ============cpp 파일====================
: #include "EScnro.h"
:
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
:
: TEScnro *EScnro;
:
: __fastcall TEScnro::TEScnro()
: {
: }
:
: AnsiString __fastcall ShowMessage(AnsiString msg)
: {
:     return "객체생성없이 왜 도냐?"; 
: }
:
: ============================================================================
:
: 만약 일반 c처럼 생각해서 객체 없이 함수만 호출한다고 한다면...
:
: TEScnro *EScnro; ==>   TEScnro EScnro; 이렇게 포인터 없이 사용해야하는거 아닌가요??(struct 사용할때처럼...)
: 그리고 EScnro->ShowMessage(msg); 이렇게 사용하는게 아니라
: EScnro.ShowMessage(msg);로 사용하는거 아닌가요??
:
: 위와 같이 코딩하면 왜 수행이 되는지 알려주시면 감사하겠습니다...
: 또한 메모리 누수 현상과도 관계가 있는지요??
:
: 조그만 도움이라도 부탁합니다...ㅜㅜ

+ -

관련 글 리스트
37683 왜 이런 현상이...ㅡㅡ?? 이상해 1114 2004/10/20
37688     Re:왜 이런 현상이...ㅡㅡ?? 친구들 1029 2004/10/20
37691         Re:Re:왜 이런 현상이...ㅡㅡ?? 황경록 1044 2004/10/20
37693             Re:Re:Re:왜 이런 현상이...ㅡㅡ?? 친구들 953 2004/10/20
37697                 Re:Re:Re:Re:인스턴스 생성 없이 호출한 멤버 함수 만복대.산수유 2341 2004/10/20
37698                     Re:Re:Re:Re:Re:왜 이런 현상이...ㅡㅡ?? 친구들 915 2004/10/20
37709                         Re:Re:Re:Re:Re:Re:왜 이런 현상이...ㅡㅡ?? 황경록 1053 2004/10/21
37711                             Re:Re:Re:Re:Re:Re:Re:왜 이런 현상이...ㅡㅡ?? 만복대.산수유 1260 2004/10/21
37685     Re:왜 이런 현상이...ㅡㅡ?? 남병철.레조 886 2004/10/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.