0

我正在创建一个从 CMFCPropertySheet 派生的属性表,它是在调用初始编辑器页面时从大型机创建的。我的问题是,当调用附加页面时,我希望为其创建一个新选项卡。调用的每个页面都将由同一个类派生,但最大页面数未知,因此需要将其定义为

    CEditorPage *m_editorpage[];

但是编译器抱怨它使用了一个零大小的数组。在析构函数中,我将在 for 循环中创建的页面从 0 删除到工作表中的页面数。在销毁后,我删除了 this 指针。程序崩溃并停止在

    delete this;

如果我不使用数组,它不会崩溃。但是因为我在每个属性页中使用相同的类页并且我不知道会有多少我需要使用一个零大小的数组。无论哪种方式,我都会遇到内存泄漏。

如何在属性表中创建一个基于 CMFCPropertyPage 的零大小数组,以便在运行时添加其他页面并在关闭属性表时执行适当的清理。在我尝试过的每种方法中,我都会遇到崩溃或内存泄漏。

4

2 回答 2

1

尝试使用动态数组

CEditorPage *m_editorpage = new CEditorPage[_num_of_editorpage];
....
delete[] m_editorpage ;
于 2013-10-22T02:42:51.517 回答
0

使用 std::vector 类或类似类怎么样?

于 2013-10-20T12:54:57.473 回答