永发信息网

我定义了一个CObArray变量m_major1存进数据后再调用里面的数据就发生内存错误, 详细情况如下:

答案:2  悬赏:60  手机版
解决时间 2021-04-12 01:28
  • 提问者网友:回忆在搜索
  • 2021-04-11 14:11
我在视图类内向m_major1存进了一个类CStuInfo stu1(dlg.m_name,dlg.m_NO,str,dlg.m_birth,dlg.m_school,dlg.m_special);
然后再文档类里面CStuInfo*p=(CStuInfo*)m_major1.GetAt(0);
然后输出p->m_name出现错误,然而在视图类里面输出p->m_name却是正确的,
我很郁闷,最后在文档类的析构函数里面
for(i=0;i delete m_major1.GetAt(i);
m_major1.RemoveAll();
又发生内存错误,我查看了m_major1的内存发现里面是一些不认识的符号,
CObArray对[]不是进行了重载吗,然而用m_major1[i]编译器却又不认识,我更郁闷
哪位大侠能不能告诉我这是怎么了,到底哪里出现了错误。
最佳答案
  • 五星知识达人网友:撞了怀
  • 2021-04-11 15:51
CStuInfo 不会是在线程堆栈中定义的吧?
看你的症状就是传给 m_major1 的 p 指针无效。指针如果指向堆栈内存的话,当心堆栈内存被销毁了(定义 CStuInfo 的函数作用域),如果再使用m_major1 中存储的指针,怎样使用都是错的。
全部回答
  • 1楼网友:鱼芗
  • 2021-04-11 17:28
a stu是结构体变量不是指针,不能使用->符号。 stu是类型,也就是结构体的名字,只能用来定义结构体,所以c和d都是错误的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯