2013-09-27 44 views
2

我是C++的初學者程序員。最近,我開始使用C++處理圖像處理。我試圖定義和使用簡單的功能,如:指定給RtlValidateHeap DLL的地址無效

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; 
} 

有在釋放模式沒有問題,但是當我在debbug模式下運行,我得到以下錯誤:

Windows在plappd.exe中觸發了一個斷點。 這可能是由於堆損壞引起的,這表明plappd.exe或它已加載的任何DLL中存在一個錯誤。 這可能也是由於用戶按下F12而plappd.exe有焦點。

我從其他DLL文件調用Matrix類的構造函數和操作。

我嘗試從Debug Multithreaded(/ MTd)更改爲Debug Multithreaded DLL(/ MDd),正如很多論壇所建議的,但它並沒有幫助解決問題。

有什麼建議嗎?

在此先感謝。

回答

0

你可以使用一些工具(如Walker Dependency)來檢查exe和dll是否使用相同的運行時? (通常你檢查MSVCR **。DLL) exe和dll必須在你的情況下使用相同的運行時間。

編輯: 還有,你說你改變了 「從調試多線程(/ MTD)來調試多線程DLL(/ MDD)」 兩者都是調試模式。因爲看起來你的運行時間在Release配置中工作正常,所以我猜你應該使用相同的值: 它應該是多線程(/ MT)或多線程DLL(/ MD)

+1

我試過Multi-線程DLL(/ MD)在發佈模式,它的工作。另一方面,多線程(/ MT)和多線程DLL(/ MD)在調試模式下給我同樣的錯誤。 – user2811175

相關問題