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에서 에러가 나네요 흠..
: : : : :
: : : : : 어딜 확인해 봐야할까요?