2

我是 C++ 的初学者程序员。最近,我开始使用 C++ 进行图像处理。我正在尝试定义和使用简单的功能,例如:

Matrix MVE(Matrix R)
{
    Matrix *X = P.T();
    invX = *X->Inverse();
    delete X;  
    return invX;
}

或者

Matrix MVE(Matrix R, double tolerance)
{
    int n = R.Y();
    int m = R.X();
    Matrix X(n,m);
for (int i = 0; i < n; ++i)
        M[i][m] = tolerance * R[i][m-1];

    return M;
}

在发布模式下没有问题,但是当我在调试模式下运行时,出现以下错误:

Windows 在 plappd.exe 中触发了断点。这可能是由于堆损坏,这表明 plappd.exe 或其已加载的任何 DLL 中存在错误。这也可能是由于用户在 plappd.exe 获得焦点时按 F12。

我正在从其他 DLL 文件中调用 Matrix 类的构造函数和操作。

我尝试按照许多论坛的建议从调试多线程 (/MTd) 更改为调试多线程 DLL (/MDd),但这无助于解决问题。

有什么建议么?

提前致谢。

4

1 回答 1

0

您能否使用一些工具(如 Walker Dependency)来检查 exe 和 dll 是否使用相同的运行时间?(通常您检查 MSVCR**.DLL)在您的情况下,exe 和 dll 必须使用相同的运行时间。

编辑: 另外,您说您将“从调试多线程 (/MTd) 更改为调试多线程 DLL (/MDd)”两者都是调试模式。由于您的运行时似乎在您的发布配置中运行良好,我想您应该使用相同的:它应该是多线程 (/MT) 或多线程 DLL (/MD)

于 2013-09-27T09:25:48.257 回答