gpt4 book ai didi

c++ - 指定给 RtlValidateHeap DLL 的地址无效

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:55:57 24 4
gpt4 key购买 nike

我是一名 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;
}

在release模式下没有问题,但是在debbug模式下运行时,出现如下错误:

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

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

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

有什么建议吗?

提前致谢。

最佳答案

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

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

关于c++ - 指定给 RtlValidateHeap DLL 的地址无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19046726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com