声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2771|回复: 3

[C/C++] VC内存释放的一个非常奇怪的问题

[复制链接]
发表于 2009-1-8 01:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

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

[ 本帖最后由 springxxc 于 2009-1-8 01:50 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2009-1-8 01:33 | 显示全部楼层

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

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

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

[ 本帖最后由 springxxc 于 2009-1-8 01:49 编辑 ]
发表于 2009-1-8 09:06 | 显示全部楼层
pDoc对象中的Vec1是你自己声明的数组么?如果不是,根本不需要你去释放。如果是,建议使用
delete [] (pDoc -> Vec1);
.
发表于 2009-1-8 09:10 | 显示全部楼层
另外,你还需要检查一下,是否其它指针型成员和该成员共享了相同空间?这样的话,你释放了内存就造成其它成员被悬挂。这个可能是最根本的。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-13 14:15 , Processed in 0.069802 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表