CArray析构函数问题

hdk_1992 2013-04-22 11:14:22
void fun1(CArray<My struct ,My struct&> & data1,cosnt CArray<CString ,CString&> &data2 ,...)
void fun2(CArray<CString ,CString&> & data2 ,...)

调用;
CArray(My struct ,My struct&) data1;
CArray<CString ,CString&> data2;
fun2(data2 ,...);
fun1(data1 ,data2 ,...);

此时数据都是正确的但是程序运行崩溃了,调试时发现,在程序最后调用CArray的析构函数式程序崩溃了,是什么问题呢?
...全文
164 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hdk_1992 2013-04-22
  • 打赏
  • 举报
回复
引用 2 楼 nirvana_newbie 的回复:
你就这样提供代码,神仙也看不出错在哪里哦,只能猜测。建议你把析构函数代码贴出来瞧瞧
for (; nCount--; ++pElements) pElements->~CString(); 崩在这里,每次析构两个之后就崩溃……
hdk_1992 2013-04-22
  • 打赏
  • 举报
回复
for (; nCount--; ++pElements) pElements->~CString(); 崩在这里,每次析构两个之后就崩溃……
nirvana_newbie 2013-04-22
  • 打赏
  • 举报
回复
你就这样提供代码,神仙也看不出错在哪里哦,只能猜测。建议你把析构函数代码贴出来瞧瞧
nirvana_newbie 2013-04-22
  • 打赏
  • 举报
回复
析构函数式程序崩溃应该是资源泄露造成的,是不是new了没有delete或者delete了非new的指针,或者重复delete了。
hdk_1992 2013-04-22
  • 打赏
  • 举报
回复
引用 7 楼 ananluowei 的回复:
析构函数极少情况下是用户显式调用执行,一般都是系统执行,不需要用户自己干预。 人为调用析构函数多数情况下是错误的。
兄弟,不好意思,结贴了才看到你的回复,那个问题解决啦……分数没给你加上不好意思……
大尾巴猫 2013-04-22
  • 打赏
  • 举报
回复
析构函数极少情况下是用户显式调用执行,一般都是系统执行,不需要用户自己干预。 人为调用析构函数多数情况下是错误的。
nirvana_newbie 2013-04-22
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
对学习编程者的忠告: 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步对应汇编一行! 单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代……
学习了。
赵4老师 2013-04-22
  • 打赏
  • 举报
回复
对学习编程者的忠告: 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步对应汇编一行! 单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。 VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。 崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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