我正在远程linux服务器上编译一个程序。程序已编译。然而,当我运行它时,程序突然结束。所以我用DDT调试了程序。它会显示以下错误:

    Process 0:
    Memory error detected in ClassName::function (filename.cpp:6462).
    Thread 1 attempted to dereference a null pointer or execute an SSE instruction with an
    incorrectly aligned memory address (the latter may sometimes occur spuriously if guard
    pages are enabled)
    Tip: Use the stack list and the local variables to explore your program's current
    state and identify the source of the error.

有人能告诉我这个错误到底是什么意思吗?
程序停止的行如下所示:
    SumUtility = ParaEst[0] + hhincome * ParaEst[71] + IsBlack * ParaEst[61] + IsBachAss * (ParaEst[55]);

这是一个开关盒。
这些是变量类型
    vector<double> ParaEst;
    double hhincome;
    int IsBlack, Is BachAss;

谢谢你的帮助!

最佳答案

意思是:
ParaEst为空或指针错误
ParaEst的单个数组值不与16字节边界对齐,这是SSE所必需的。
hhincome、IsBlack或IsBachAss不与16字节边界对齐,并且是SSE类型值。
SumUtility未与16字节对齐,是SSE类型字段。
如果您可以将失败的确切行的汇编代码与该汇编程序行的寄存器值一起发布,我们可以确切地告诉您以上哪些条件失败了。它还将有助于查看显示的每个变量的类型,以帮助缩小根源。

10-07 22:39