到目前为止,我认为仅当我尝试访问数组边界之外的数据时才会发生主要恐慌42。感谢你们的一些很好的反馈,我能够解决我的其他问题。但是,现在发生的事情是,在尝试按如下方式分配char数组时,我得到了这个恐慌
unsigned char *buf = new unsigned char[5000];
任何人都知道可能会发生什么?它工作正常一次,但第二次程序来自这条线,它崩溃了。有没有什么好的策略可以解决这个错误?
再次感谢!
答案 0 :(得分:0)
堆损坏是USER 42恐慌的可能原因。例如,写入超出其他已分配单元格的边界或使用陈旧指针到已释放的内存。
首先查看在该紧急点之前发生的allocs / frees / memory写入。通常你不必走很远就能找到腐败。