|
최보현.U&I 님이 쓰신 글 :
: 해당화 님이 쓰신 글 :
: : 한개의 TList에 여러 종류의 콤퍼넌트가 들어 있습니다.
: : TShape , TImage , TLabel 등등..
: :
: : 근데 이것을 delete시켜줄때
: :
: : delete (TObject *)lst_Temp->Items[0];
: :
: : 이런식으로 해줘도 괜찮을지요..
: :
: : delete는 문제 없이 되지만
: :
: : 메모리 어딘가에 문제가 생기지 않을까 궁금합니다.
: :
: : 언어적으로 기초적인 밑바닥을 긁어 봐야 할거 같은데...
: :
: : 어떨지요?
:
: 유앤아이 현지 아빠입니다 ....
:
: 제가 알기론 문제가 없을듯 합니다 ...
:
: 반대로 생각 해보면 ...
:
: 이런 경우가 있지요~
:
: TObject * p = (TButton *)new TButton(this);
:
: ....
:
: delete p;
:
: 가 가능 하지요~
:
: 정확히 반대의 생각 입니다 ...
:
: 그러니 ...
:
: 님이 생각 하시는 그런 문제도 당연히 가능 한겁니다 ...
:
: 포인터라 함은 주소일 뿐입니다 ...
:
: TButton 의 포인터가 ... TObject 의 포인터로 바뀐다구 해서 ...
:
: 그것의 주소가 바뀌는 건 아니지요~
:
: 그러니 delete 는 당연히 그 주소를 지울 뿐입니다 ...
:
: 형 변환은 ... 단순히 컴파일러의 제한상황이지 .. 절대 ... 그 언어 자체의 기능이 아닙니다 ...
:
: 일단 어떻게든 컴파일러만 속여서 컴파일만 되면 ... (컴파일이 않되는코드라도)
:
: 그다음부터 ... 원했던 되로 동작 된다라는거 잊지 마시고 상기 하십시요~~
:
: 일단 실행파일만 만들어지만 ... 지가 private 변수인지 ... public 변수 인지 알게 뭡니까 ...
:
: 기계적으로 접근만 가능하면 .. 사용 가능 한겁니다 ...
:
: 단지 프로그래머의 실수를 방지 하기 위해 ... 컴파일러가 에러라고 ... 잡아내는거라는거 ...
:
: 이거 .. 잊지 마세요~~ 상당히 의미 있는 말입니다 ...
:
: 그럼
|