2013-10-20 9 views
0

CMFCPropertySheet에서 파생 된 속성 시트는 초기 편집기 페이지가 호출 될 때 메인 프레임에서 만들어집니다. 내 질문은 추가 페이지를 호출 할 때 새 탭을 만들 때입니다. 호출되는 각 페이지는 동일한 클래스에서 파생되지만 페이지의 최대 수는 알 수 그래서모덜리스 속성 시트 만들기 속성 페이지 배열 사용 MFC C++

CEditorPage *m_editorpage[]; 

으로 정의 될 필요가 있지만, 컴파일러는 그것의 크기가 0 인 배열을 사용하여 뿌려줍니다. 소멸자에서 for 루프에서 생성 된 페이지를 0에서 시트의 페이지 수만큼 삭제합니다. in destroy이 포인터를 삭제합니다. 나는 그것이 충돌하지 않는 배열을 사용하지 않는 경우 프로그램 충돌 및

delete this; 

에서 멈 춥니 다. 그러나 각 속성 페이지에서 동일한 클래스 페이지를 사용하고 있고 크기가 0 인 배열을 사용해야하는 이유가 얼마나되는지 알지 못합니다. 어느 쪽이든 나는 메모리 누출을 얻고있다.

런타임시 추가 페이지를 추가하고 속성 시트가 ​​닫힐 때 적절한 정리를 수행 할 수 있도록 속성 시트에 0 크기의 CMFCPropertyPage 기반 배열을 어떻게 만들 수 있습니까? 내가 시도한 모든 방법에서 충돌이나 메모리 누수가 발생합니다.

답변

0

std :: vector 클래스 또는 유사 사용 방법은 어떻습니까?

1

시도 동적 배열을 사용

CEditorPage *m_editorpage = new CEditorPage[_num_of_editorpage]; 
.... 
delete[] m_editorpage ;