2015-11-23 93 views
0

當我嘗試編譯我的程序我得到錯誤c0000374 ......什麼會導致呢? 期間,調試器進入initGlobalVectorP()函數,然後崩潰。 將數據分配給內存可能會影響該問題?嚴重錯誤 - > c0000374

FemGrid::FemGrid(int dimension) 
{ 
    this->dimension = dimension; 

    initGlobalMatrixH(); 
    initGlobalVectorP(); 
} 

FemGrid::~FemGrid() 
{ 
    free(*globalMatrixH); 
    free(globalMatrixH); 
    free(globalVectorP); 

} 

void FemGrid::initGlobalMatrixH() 
{ 
    globalMatrixH = static_cast<double**>(malloc(sizeof(int) * dimension)); 
    for (int i = 0; i < dimension; i++) 
    { 
     globalMatrixH[i] = static_cast<double*>(malloc(sizeof(int) * dimension)); 
    } 


    for (int i = 0; i < dimension; i++) 
    { 
     for (int j = 0; j < dimension; j++) 
     { 
      globalMatrixH[i][j] = 0.0; 
     } 
    } 
} 

void FemGrid::initGlobalVectorP() 
{ 
    globalVectorP = static_cast<double*>(malloc(sizeof(int) * dimension)); 

    for (int i = 0; i < dimension; i++) 
    { 
     globalVectorP[i] = 0.0; 
    } 
} 
+1

可能是因爲您分配'4 *字節for'循環您希望您分配的空間dimension'量,但在''8 *的字節空間dimension'量(和經歷這一切,擊中未分配的空間邊界在'維度/ 2'處)。 –

回答

2

在你malloc是你正在使用sizeof(int)代替sizeof(double)

而且你的析構函數只刪除的globalMatrixH第一行。它應該是一個遍歷每個索引的循環,就像在構建中一樣。

+0

哈哈,就是這樣。我必須使用'sizeof(double)'而不是'sizeof(int)'。謝謝。 –