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
[67482] Re:Re:Re:Re:Re:동적생성한 프레임 삭제 질문좀요
빛의암살자 [] 965 읽음    2012-06-12 14:25
TFrame_Object **Frame_Object; // 함수 외부에 있는 변수는 데이터 영역에 할당되므로 NULL 로 초기화 됩니다. 

보이드 T클래스::아무나함수(널)
{
    TFrame_Text **Frame_Text; // 함수 내부에 있는 변수는 스택 영역에 할당되므로 쓰레기가 들어갑니다.
}


또한 위와 같이 외부에 선언되어 있다 해도 사용 전, NULL 로 초기화 해주는 것은 타 프로그래머를 위해서라도
기본적으로 코딩해줘야 합니다.

질문글에서는 if(!Frame_Object) 부분 이후의 코딩에서,
포인터 사용이 잘못된 듯 합니다.

추가로... 이중포인터변수를 쓰셨는데,
동적 할당을 하실 거라면 직접 모든 처리 데이터를 전부 관리하지 않을 거라면,
DynamicArray 를 쓰시는 걸 추천합니다.

	int len = 2;
	DynamicArray  obj;
	obj.set_length(len);
	obj[0] = new TPanel(Application);
	obj[0].Caption = "출력";


이런 식으로요...



축구 님이 쓰신 글 :
:
: //헤더
: TFrame_Object **Frame_Object;
: TFrame_Text **Frame_Text;
: TFrame_Image **Frame_Image;
: 
: //본문
: 	if(!Frame_Object)
: 	{
: 		Frame_Object = new TFrame_Object *[m_nFrame_Object_Count];
: 	}
: 
: 	Frame_Object[i] = new TFrame_Object(NULL);
:                .
:                .
:                .
: 

:
: 텍스트, 이미지 프레임 다 오브젝트처럼 필요할때만 불러다 생성하는데 혹시 여기서 뭔가 꼬이는 건가요?
:
:
: 빛의암살자 님이 쓰신 글 :
: : Frame_Object[i] = new TFrame_Object(NULL); // 이게 생성
: :
: : 이건 프레임 생성 시에 하는거구요.
: : 제 말은...
: :
: : TFrame_Object *Frame_Object; // 이게 선언
: :
: : 요놈 했을 때를 말씀드리는 겁니다.
: :
: : 아마도 프레임 오브젝트 내에 프레임 텍스트, 프레임 이미지 등을 만드신 듯 한데,
: : 프레임 텍스트를 생성할 때,
: :
: : Frame_Text[i] = new TFrame_Text(NULL);  // 이렇게 되어 있을거라 생각되서 씁니다.
: :
: : 요 놈은 들어가겠지만, 생성을 안 하는 경우라면
: :
: : TFrame_Text *Frame_Text[i]; // 선언만 했으므로 어떤 값이 들어있을 지 모름. 쓰레기....
: :
: : 요렇게만 되어 있을 텐데, 선언만 해 놓고 생성을 하지 않은 상태에서,
: :
: : if(Frame_Text[i])
: :
: : 이걸 하게 되면 아무래도 문제가 생기지 않을까요?
: : 추측성 답변이라 확답을 드리기 어렵네요 ㅠㅠ
: :
: :
: :
: : 축구 님이 쓰신 글 :
: : : Frame_Object[i] = new TFrame_Object(NULL);
: : : 선언은 이런식으로 하고
: : : 따로 Frame_Object[i] = NULL; 이건 안해줬어요.
: : :
: : :
: : : 빛의암살자 님이 쓰신 글 :
: : : : 혹시 프레임변수 선언 시에 NULL 할당은 해주셨는지...
: : : : 외부 변수가 아니라면 쓰레기값이 들어가 있을지도 모르겠네요.
: : : :
: : : :
: : : : 축구 님이 쓰신 글 :
: : : : :
: : : : : for(int i = 0;i < m_nFrame_Object_Count; i++)
: : : : : 	{
: : : : : 		if(Frame_Text[i])  //여기서 에러
: : : : : 		{
: : : : : 			delete Frame_Text[i];
: : : : : 			Frame_Text[i] = NULL;
: : : : : 		}else if(Frame_Image[i])
: : : : : 		{
: : : : : 			delete Frame_Image[i];
: : : : : 			Frame_Image[i] = NULL;
: : : : : 		}
: : : : : 
: : : : : 		if(Frame_Object[i])
: : : : : 		{
: : : : : 			delete Frame_Object[i];
: : : : : 			Frame_Object[i] = NULL;
: : : : : 		}
: : : : : 	}
: : : : : 

: : : : :
: : : : : 삭제할때 read address 00000000에러가나는데요 Frame Image를 만들고 다음 누르면 삭제를 하는데
: : : : : Frame Text는 안만들어서 Null이라 if문에서 그냥 넘어가야 정상인데 왜저기서 에러를 띄울까요 아무리 생각해도
: : : : : 답이 안나오네요.
: : : : :
: : : : : Frame Text를 먼저 만들어도 else if 문 Frame Image에서 에러가 나네요 흠..
: : : : :
: : : : : 어딜 확인해 봐야할까요?

+ -

관련 글 리스트
67469 동적생성한 프레임 삭제 질문좀요 축구 998 2012/06/12
67472     Re:동적생성한 프레임 삭제 질문좀요 빛의암살자 949 2012/06/12
67473         Re:Re:동적생성한 프레임 삭제 질문좀요 축구 916 2012/06/12
67474             Re:Re:Re:동적생성한 프레임 삭제 질문좀요 빛의암살자 953 2012/06/12
67480                 Re:Re:Re:Re:동적생성한 프레임 삭제 질문좀요 축구 939 2012/06/12
67482                     Re:Re:Re:Re:Re:동적생성한 프레임 삭제 질문좀요 빛의암살자 965 2012/06/12
67485                         Re:Re:Re:Re:Re:Re:동적생성한 프레임 삭제 질문좀요 축구 1052 2012/06/12
67478                 Re:Re:Re:Re:동적생성한 프레임 삭제 질문좀요 축구 912 2012/06/12
67475                 Re:Re:Re:Re:동적생성한 프레임 삭제 질문좀요 축구 888 2012/06/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.