我正在创建一个从CMFCPropertySheet派生的属性表,它是在调用初始编辑器页面时从大型机创建的。我的问题是,当一个额外的页面被调用时,我想为它创建一个新的标签。调用的每个页面都将由同一个类派生,但最大页数是未知的,因此需要将其定义为
CEditorPage *m_editorpage[];
但是编译器抱怨它使用零大小的数组。 在析构函数中,我删除了for循环中创建的页面,从0到表格中的页面数。 在post destroy中我删除了这个指针。 程序崩溃并停在
delete this;
如果我不使用数组,它不会崩溃。但是因为我在每个属性页面中使用相同的类页面,我不知道有多少我将需要使用零大小的数组。 无论哪种方式,我都会收到内存泄漏。
如何在属性表中创建零大小的基于CMFCPropertyPage的数组,以便在运行时添加其他页面,并在关闭属性表时执行适当的清理。我在尝试的每种方法中都遇到了崩溃或内存泄漏。
答案 0 :(得分:1)
尝试使用动态数组
CEditorPage *m_editorpage = new CEditorPage[_num_of_editorpage];
....
delete[] m_editorpage ;
答案 1 :(得分:0)
如何使用std :: vector类或类似的?