当前位置:C++技术网 > 资讯 > 在**.exe中触发了一个断点,其原因可能是堆被损坏,这说明dll中有bug

在**.exe中触发了一个断点,其原因可能是堆被损坏,这说明dll中有bug

更新时间:2016-05-21 22:25:37浏览次数:1+次

    今天写数据结构作业——栈和队列的时候遇到的一个问题,原本,我是照着课本上写代码的,就是初始化栈,将数据压入栈,出栈等等一系列函数的算法实现。写完之后点击运行,输入测试代码,直接给出我这样的错误:

后来查资料也没有找到,话说C/C++就是在指针和内存分配这里费脑!程序出错的原因百分之八十是因为指针和内存!哎......对比其他的语言,C++在这一点上的确不足,不过呢,从另一点上来讲,这也锻炼了我们调试代码的能力,及增加了我们对程序内存管理的知识。我刚遇到这个问题的时候,没法解决。根据调提示,我觉得应该是malloc这个函数的问题。然后,还是没有下手的思路,后来,我想起来了写的代码:
temp=(int *)malloc(10*sizeof(int));//新添加的代码
这是《解析面试题:下面哪个函数实现两个数的交换——指针与引用的理解 》里的代码,也就是指针分配内存的代码问题。后来我就想我尝试着给它多分配点内存看看,后来我就增大了分配的内存空间。先看看我原来的代码:
PSeqStack s;
s=(PSeqStack)malloc(sizeof(PSeqStack));
修改后的:
PSeqStack s;
s=(PSeqStack)malloc(100*sizeof(PSeqStack));、
然后运行成功!
在这里呢,总结一下,对于指针和内存的错误,一般是因为分配的内存空间以及访问的内存数据越界之类的原因,尝试着从内存方面着手调试——扩大分配内存的空间。