2013-04-17 60 views
2

「堆的腐敗」錯誤我面臨堆腐敗錯誤:我有一個dll和TestAPP。當返回std :: vector <Point>從函數

  1. vector<Point> vInPts; //測試中的應用 - 傾銷輸入像下面

    vInPts.push_back(Point(730,405)); 
    vInPts.push_back(Point(319,680)); 
    vInPts.push_back(Point(292,757)); 
    vInPts.push_back(Point(318,756)); 
    vInPts.push_back(Point(726,736)); 
    vInPts.push_back(Point(344,731)); 
    
  2. vector<Point> vOutPts;

  3. 調用DLL - >複製在DLL相同vInPts矢量vOutPts載體」 - >當從返回這個函數會出現TestApp - > Heap Error。現在面臨堆錯誤enter image description here

我該如何解決這個堆錯誤?
在此先感謝!

+0

你如何複製到輸出向量? – juanchopanza

+0

@juanchopanza我正在做正確的方式,我非常肯定,複製不會是我的情況下的問題。 「我測試過了」,即使我只將輸入向量傳遞給dll,並且對輸入向量無所作爲,並且當控件進入TestAPP時 - 同樣的Heap Error也會出現。 – Pixel

+0

您正在使用哪個運行時?你是否使用相同的運行時爲DLL和應用程序? –

回答

2

閱讀您的Point類的實際定義會很有趣。它是否可以正確複製?

而且,由於您使用的DLL,並與STL類的EXE,確保兩個DLL和EXE與動態鏈接到CRT的相同的味道建(比如他們都建有相同版本的C++編譯器的,並以相同的設置,與發佈版本EXE例如發佈版本DLL等)

事實上,STL類的實現不同在發佈版本和調試版本(例如,在調試版本像迭代器驗證等檢查有更多的開銷)。
如果在EXE和DLL之間共享STL類,它必須是相同的類,而不是具有相同名稱但實現不同的類。

相關問題