望麓自卑—湖南大学最具潜力的校园传媒

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2208|回复: 2

高手请教,模拟指针链表插入一条记录数组越界或堆栈溢出?

[复制链接]
发表于 2009-4-4 18:40:09 | 显示全部楼层 |阅读模式
模拟链表类simchain.h 和记录类TableRecor.h检查了所有功能都没有错
错误出在TableBody
TableBody的插入和追加一条记录的函数也是调用的simchain类的增加一个节点和追加一个节点的函数
调试的时候最后能实现插入一条记录和追加一条记录
输出也能输出
就是在按回车跳出调试的时候
用debug类型调试
跳出这么一个错误

Program:f:\\课程实验\\测试\\simchain\\Debug\\simchain.exe
File:f\\dd\\vctools\\crt_bld\\self_x86\\crt\\dbgdel.cpp
Line:52

Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

For information on how your program can cause an assertion failure, see ......


用release类型调试的时候
跳出的错误显示是:
simchain.exe 中的 0x76ec59c3 处未处理的异常: 0xC0000005: 读取位置 0xe66426b4 时发生访问冲突


问题出在TableBody
网上查了好像说是数组越界
但是tablerecord类插入一个字段和追加一个字段一点问题都没有
只有在tablebody里插入一条记录和追加一条记录就出现这个问题....
调试了两天了,小弟实在找不出错误在哪
崩溃了!!
望高手给帮帮忙啊~~!!谢谢了啊

源代码在附件里....
用的是vs2008

simchain.rar

479 KB, 下载次数: 266

发表于 2009-4-4 19:32:49 | 显示全部楼层
既然我帮不了你,就帮你顶一下吧~
 楼主| 发表于 2009-4-4 21:44:17 | 显示全部楼层
自己找到错误了...

这是堆破坏所造成的,问题可能是在释放内存空间时对没有申请的空间进行释放
或者已经被删除的空间进行删除时,就会出现这个错误。

在simspace类里还有一个析构函数我没发现
这个析构函数导致在内存释放的时候
tablerecord类和tablerecord类
分别delete了两次
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

每日推荐上一条 /1 下一条

小黑屋|手机版|湖南大学望麓自卑校园传媒 ( 湘ICP备14014987号 )

GMT+8, 2024-11-24 00:04 , Processed in 0.348456 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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