springxxc 发表于 2009-1-8 01:32

VC内存释放的一个非常奇怪的问题

在VC编程中,遇到一个非常奇怪的问题:在视类中----delete----- 文档类中的成员对象时,文档类的该对象无法删除,且文档类中其它成员竟然发生莫名其妙的变化,请高手支招。

示例性代码可如下所示:
CTestDoc *pDoc = GetDocument();
ASSERT_VALID(pDoc);
delete [] pDoc->Vec1;

[ 本帖最后由 springxxc 于 2009-1-8 01:50 编辑 ]

springxxc 发表于 2009-1-8 01:33

VC内存释放的一个非常奇怪的问题

在VC编程中,遇到一个非常奇怪的问题:在视类中----delete----- 文档类中的成员对象时,文档类的该对象无法删除,且文档类中其它成员竟然发生莫名其妙的变化,请高手支招。

示例性代码可如下所示:
CTestDoc *pDoc = GetDocument();
ASSERT_VALID(pDoc);
delete [] pDoc->Vec1;

[ 本帖最后由 springxxc 于 2009-1-8 01:49 编辑 ]

cooller 发表于 2009-1-8 09:06

pDoc对象中的Vec1是你自己声明的数组么?如果不是,根本不需要你去释放。如果是,建议使用
delete [] (pDoc -> Vec1);
.

cooller 发表于 2009-1-8 09:10

另外,你还需要检查一下,是否其它指针型成员和该成员共享了相同空间?这样的话,你释放了内存就造成其它成员被悬挂。这个可能是最根本的。
页: [1]
查看完整版本: VC内存释放的一个非常奇怪的问题