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
[37688] Re:왜 이런 현상이...ㅡㅡ??
친구들 [] 1029 읽음    2004-10-20 09:09
답변 감사합니다...위 답변을 보고 코드를 수정을 했습니다....

근데...제가 의문시되는것은 new로 생성을 하지 않은 코드가 돈다는 겁니다...
아래 코드는 project option의 autocreate form도 아닙니다...
즉, new 해주는 부분이 없습니다..그냥 function call하는것처럼 쓰고 있습니다..
물론 객체를 생성하면 Method called on invalid object라는 코드가드에서 뿌리던 메시지는 사라집니다..

지금까지 객체생성없이 잘 사용했기때문에 만약 문제가 있다면...
모든 소스를 바꾸어야 하는 문제가 생기기 때문에 저한테는 매우 중요한 문제입니다..

아무쪼록 이런 경험이 있으시면 reply감사하겠습니다...

그럼...






이상해 님이 쓰신 글 :
: 코드 가드를 이용했더니 다음과 같은 에러를 뱉어냅니다...
:
: 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 TEScnro::ShowMsg(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:왜 이런 현상이...ㅡㅡ?? 황경록 1045 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:왜 이런 현상이...ㅡㅡ?? 만복대.산수유 1261 2004/10/21
37685     Re:왜 이런 현상이...ㅡㅡ?? 남병철.레조 887 2004/10/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.