0

我的 Windows C++ 程序表现得比以往更糟。它会自发崩溃,通常是在函数返回任何内容时/之后。指示的故障模块有时是程序本身,有时是 ntdll.dll,有时是 StackHash_something,异常代码有时是访问冲突,有时是 40000015。这让我发疯了。我曾经看到这种崩溃发生在为某个变量分配值之后,如果我评论了执行该分配的行(并在其他地方发生......),则不再发生。

但是我无法追踪问题......有什么提示吗?

我实际程序中的一段代码,以举例说明我所说的(尽管我怀疑它是否很有帮助):

void Propozitie::AdaugaConstructieIncidenta(wstring text)
{
// Some function that creates/updates a member in a "Propozitie" object
// constr_incidenta is Entitate*, member of "Propozitie"
// p is a wstring, member of object "Entitate"
delete constr_incidenta;
constr_incidenta = new Entitate;
constr_incidenta->p = text;
// ^ app crashes here.
//had it been constr_incidenta->p = L""; it wouldn't have crashed
}

更新:我重新安装了 Windows、GCC 和所有东西。我得到同样的无法解释的错误!也许一个提示是,分配发生在程序执行了一组递归函数之后,这些函数在途中创建了一些对象......?我很绝望。

4

3 回答 3

0

听起来您需要重新评估所有代码。我认为这是一个大型代码库,您不能只在此处发布,但通常当内存开始损坏时会出现此类错误,因为您在初始化内存的范围之外进行写入和/或读取。

于 2012-07-24T16:05:18.210 回答
0

Entitate 有默认构造函数吗?如果没有,当你调用“new Entitate”时它不会被初始化。

于 2012-07-24T16:32:23.903 回答
0

我在我的项目中遇到了同样的问题。最后是一个循环函数调用。也许确保在您的递归中您不会意外地进行循环调用或溢出调用堆栈。

我想发表评论,但我没有足够的代表。

于 2014-09-10T07:55:46.693 回答