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
[6221] 메모리 변수에 대한 질문....
악동 [] 2067 읽음    2001-03-20 17:16
VC++와는 너무 다른가 보네요.
질문이 좀 난잡합니다.  T.T
이해해 주세요....

1. 변수 선언시... 예를들면 말이죠... 아래처럼
   TButton *Button2;
   이럴경우 Button2라는 변수를 사용하기 위해서는 new 연산자로
   메모리를 할당해 주어야 하는것 아닌가요?
   그리고 메로리를 할당 받을 때 Contructor가 호출되는 것이 아닌지요.
   DEBUGGING 을 해보니 변수 선언시에 Constructor가 호출되는 것 같아서요.

2. Thread 사용시의 동적 메모리 사용에 관하여.
   Thread Class 재정의 시에 만들어서 사용하는 각종 함수의 내부에서
   동적 메모리의 생성은 금지 되어 있는건지요?

3. 아래 제가 올린 코드에서 에러가 납니다.
   설명에서처럼 첫번째 실행에서는 에러가 나질 않는데,
   같은 함수를 다시 사용했을 경우, 엉뚱한 다른 변수의 내용이 바뀝니다.
   이줄이 실행되면서 메모리 바뀜
  
   ----->TSetupFrm *setup=new TSetupFrm(this);                   

답변 주심 정말로 정말로 감사하겠습니다.

--- 빌더 포기의 위기에 휩싸인 악동 ---


###########MainFrm.h################################

class TMainFrm : public TForm
{
__published:   
    TButton *Button2;
    TButton *Button7;

    void __fastcall Button2Click(TObject *Sender);
    void __fastcall Button7Click(TObject *Sender);

public:       
    __fastcall TMainFrm(TComponent* Owner);
    MainRun *run;                       <----------------- 이 메모리가 변경됨
};


###########MainFrm.cpp################################
void __fastcall TMainFrm::Button7Click(TObject *Sender)
{
   if(run==NULL) {
    run=new MainRun;              ---->많은 동적 메모리를 형성합니다.(new 연산자 사용)
    run->InitModule();
   }
}

void __fastcall TMainFrm::Button2Click(TObject *Sender)  --->이 버튼을 눌러 실행시, 첫번째
{                                                            실행은 정상입니다. 두번째 실행
    TSetupFrm *setup=new TSetupFrm(this);                    시 엉뚱하게도                 
    setup->ShowModal();                                      위에 있는 run의 데이터가 
    delete setup;                                            변경됩니다.  
}


##############SetupFrm.h################################
__fastcall TSetupFrm::TSetupFrm(TComponent* Owner)
    : TForm(Owner)
{
    member=NULL;
}
//---------------------------------------------------------------------------

##############SetupFrm.cpp################################
void __fastcall TSetupFrm::FormCreate(TObject *Sender)
{
   if(member==NULL){
        member=new OTDSConfig;    ---->이 변수는 Form Close시 delete됩니다.
   }

   if(MainFrm->run!=NULL ) {
        member=(OTDSConfig *)(MainFrm->run->data);
    }
   else
    {
        if(!member->ReadConfig() ) member->SetDefault(member->nDataLen);
    }

    refresh();
}

+ -

관련 글 리스트
6221 메모리 변수에 대한 질문.... 악동 2067 2001/03/20
6223     Re:메모리 변수에 대한 질문.... 박세용 2311 2001/03/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.