这是堆溢出吗

scklotz 2001-09-05 06:45:36
我定义了一个类,里面很多CString 变量,还定义了一个CStringArray。
这个类有一个变量是对话框成员变量的成员变量的成员变量。
结果我发现在CMyApp::InitInstance()中,当执行到如下
CMyDlg dlg;
m_pMainWnd = &dlg; // 发生错误了
Unhandle exception in xxx.exe: 0xc000000005: access violation.
我想是不是堆溢出了?
还有很多问题,就是我把CStringArray这个变量删除了之后,发现不出现错误了,但是该类的虚函数调用却调用成另外一个函数。真是奇怪。名名是虚函数,跟踪却进了另外一个函数。
我想是不是该类的虚函数表被冲或覆盖了?
请高手指点一二。
...全文
142 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
scklotz 2001-09-09
  • 打赏
  • 举报
回复
今天结束这个问题。
scklotz 2001-09-07
  • 打赏
  • 举报
回复
to xj_h():
我已经clean了n次了。结果问题还是不行哦。没办法,最后是把哪个文件从工程里给删除,然后再加上,才解决的。
xj_h 2001-09-07
  • 打赏
  • 举报
回复
没事干就build all一把,比如你想问题的时候
安全,放心
别在本地保存太多的源代码备份,很快你就找不到你要的了
scklotz 2001-09-07
  • 打赏
  • 举报
回复
哈哈,问题解决了,tnnd, 是project里头的.h文件和cpp文件错位。
我编辑的是一个文件,编译的却是另外一个。tnnd, 最后我把哪个类的接口函数名字给改了,发现使用这个类的地方编译还是没有问题。哈。真是受不了。最后导致虚函数表错位,函数调用错位,tnnd当然出问题了。
我来push一下,欢迎大家再来讨论讨论,明天结束这个贴子,来者有分哟。
scklotz 2001-09-06
  • 打赏
  • 举报
回复
sclzmbie(梦里红尘) 
问题当然不是这样的,那是wizard产生的代码,不可能有问题的,我只是追踪到问题出在这里,具体的我也无法再追踪下去了。
pitchstar 2001-09-06
  • 打赏
  • 举报
回复
空指针吧
sclzmbie 2001-09-06
  • 打赏
  • 举报
回复
内存空间一般不成问题,但你定义一个局部变量,然后将它赋给主程序指针,那么在完成初始化之后,m_pMainWnd 就无定义了,程序当然会错。你将 CMyDlg dlg;写到 CMyApp 类中去!!
scklotz 2001-09-05
  • 打赏
  • 举报
回复
不知道你们遇到过没有,就是一个类的成员变量太多,以至于占用空间过大,最后程序启动时候就出现错误,比如我在基于对话框应用的对话框类里头定义一个类数组,比如这个类很大,有几十k,数组的维数有几百,这样的情况我遇到过,结果就是程序根本无法启动,启动时候就出现非法操作,存取意外,同样,上面也是同样的错误,启动时候非法操作。不知道为什么。
shiyutao2010 2001-09-05
  • 打赏
  • 举报
回复
我也同意minotaurus(弥诺陶络斯)的,用不着去自己定义空间,让windows自己决定不就行了
守田人 2001-09-05
  • 打赏
  • 举报
回复
我用这个的经验是,根本不去申请空间,自然也不用释放,全部让windows管理
scklotz 2001-09-05
  • 打赏
  • 举报
回复
问题肯定不是这样子引起的,我根本没有对它进行任何操作。
我估计是系统的栈不够用了,被初始化变量用完,以至出现这样的错误?
不知道大虾认为如何?
wyzegg 2001-09-05
  • 打赏
  • 举报
回复
是你使用这个CStringArray中出现错误,使用后不用释放也可以,比如你设置长度为5却访问访问第7个,肯定会错。
tengy1 2001-09-05
  • 打赏
  • 举报
回复
CStringArray是在堆上开辟的数组!
使用后必须释放!
成员函数好像是rease()
scklotz 2001-09-05
  • 打赏
  • 举报
回复
对了,上面说的是栈不是堆。
CString 是怎么管理内存的?是堆上还是栈上?我现在被这个问题折腾得不行了。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧