我有一个C++程序(GCC),当我向一个抽象基类中添加一个或多个int成员时,该程序开始崩溃。在我检查过的情况下,似乎通过添加此成员,派生类中的成员退出了初始化(或在某些时候踩踏)。如果我添加更多成员,它将开始工作(而不是工作)。这真的很奇怪,因为该成员从未在任何地方使用过。我可以注释掉其中一行,然后程序重新编译就可以了,并且可以正确运行。
整个程序约为3KLOC,很难精简。
我完全不知所措。有任何想法吗?
更新资料
我发现了问题:在同一程序中,free
-ing malloc
-ed内存和delete
-ing new
-ed内存不安全。
最佳答案
在我的头顶上,没有看到任何代码(请参阅您的问题的注释),我建议使用流氓指针,该指针通常会踩到您未注意到的东西,但是引入新成员会使它踩到您确实注意到的东西。
尝试添加不同大小的成员,或者添加更多(未使用)的int
成员,或者添加以下形式的字符串:const char xxx[50];
以保留更多空间。