TFrame_Object **Frame_Object = new TFrame_Object *[m_nFrame_Object_Count];
이걸 나눠 사용한건데 이게 아닌가요?
빛의암살자 님이 쓰신 글 :
:
: 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에서 에러가 나네요 흠..
: : : : : :
: : : : : : 어딜 확인해 봐야할까요?