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
[71157] Re:메소드에서 선언된 지역변수 메모리 해제 관련질문...
빌더초보 [] 4800 읽음    2014-04-04 22:27
일단 제가 알기론 그런경우 전역변수로 선언해야 되는게 맞습니다만,

질문 한 이유가 '자잘한 전역변수가 많아지는게 보기싫다' 라고 생각되어 적어봅니다.


만약 그런 경우라면 TList를 사용하는 방법이 있습니다.
TList는 모든 type의 포인터를 담을수 있으니까요.
대신 TList에 어떤게 담겨있는지 구별하는 변수정도는 있어야겠죠.
예를 들어 List_GlobalClass 라는 TList 를 선언하고, 여기에 담아서 쓰려는 객체가 A, B 두개 일때,

vector<unsigned char> ListType;

이런식으로 따로 가변 배열을 전역 변수로 선언해서 (만약 객체의 갯수가 256 개가 넘는다면, unsigned short로...)

List_GlobalClass->Add(A);
ListType.push_back(0);

List_GlobalClass->Add(B);
ListType.push_back(1);

이런식으로 구분하면, 두개의 전역변수(TList, vector)로 모든 type의 변수를 Control (생성, 사용, 해제) 할 수 있는거죠.

TList에서 포인터를 꺼내 쓸때 자료형을 확인하는 방법이 존재하는지 몰라서 따로 vector를 써야되겠다는 거고
만약 존재한다면 이런 뻘짓은 안해도 될것 같네요.
(생각 해보니 TObject를 상속받은 class 라면 TObject*로 캐스팅해서 ClassName() 함수를 호출해도 되긴 하겠군요...)


어쨋든, 질문의 의도에 부합했는지 모르겠네요.



P.S.

작성자가 아니더라도 제가 적은 내용에 오류가 있으면 지적을 해주시기 바랍니다.
질게에 답변을 다는 가장 큰 이유가 제가 공부하기 위해서 입니다.
답변을 달기 위해선 '정확'해야 되니까, 여기저기 찾아보고 실제로 구현해보고 하면서 얻는게 많거든요.
헌데, 잘못된 지식을 퍼트리거나, 잘못된지 모르고 있는건 큰 문제잖아요.
그러니 문제가 있는 내용이다 싶으면 귀찮으시더라도 부디 꼭! 지적을 해주시기 바랍니다.


만나바 님이 쓰신 글 :
: 메소드에서 new를 통해 컴포넌트 객체를 생성한다음에 메모리를 해제할려면
: 해당 메소드 안에서 메모리를 해제 해야되는걸로 알고 있는데 해당 메소드 안에서 객체의
: 메모리를 해제하면 메소드 호출시 해당 컴포넌트 객체가 바로 삭제되는거자나요.
: 지역변수처럼 선언된 객체를 해제 하려면 어떻게 해야할까요? ( 변수들을 다 전역변수로 선언해야할까요?)다 전역변수로 선언해야할까요?)

+ -

관련 글 리스트
71154 메소드에서 선언된 지역변수 메모리 해제 관련질문... 만나바 4528 2014/04/04
71182     Re:메소드에서 선언된 지역변수 메모리 해제 관련질문... pwrlove 3154 2014/04/10
71183         Re:Re:메소드에서 선언된 지역변수 메모리 해제 관련질문... pwrlove 4311 2014/04/10
71157     Re:메소드에서 선언된 지역변수 메모리 해제 관련질문... 빌더초보 4800 2014/04/04
71184         Re:Re:메소드에서 선언된 지역변수 메모리 해제 관련질문... pwrlove 3328 2014/04/10
71217             Re:Re:Re:메소드에서 선언된 지역변수 메모리 해제 관련질문... pwrlove 3136 2014/04/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.