考虑如下所示的类,其中API指示导出的函数:
class A
{
std::vector<Eigen::MatrixXd> C;
public:
Eigen::MatrixXd getMatrix(int i) { return C[i]; }
//assume C always has enough elements to return
}
//Then a function from exe access the above as following
void foo(){
A a(); //assume something is generated in a.C
{
Eigen::MatrixXd c = a.getMatrix(10);
}
checkHeap(); //heap corruption detected
}
如何在不从dll堆边界问题中获取错误的情况下正确返回矩阵。
编辑:结果是派生类有一个虚拟重写函数,它返回一个非临时矩阵。编辑问题以反映这一点。 EDIT2:发现test exe和dll之间的构建参数不一致,导致出现此错误。现在已修复。