2012-10-08 88 views
1

當我嘗試在我的代碼中釋放爲矩陣分配的內存時,出現問題。 我使用這個功能:釋放內存,Windows已經觸發了一個斷點

void free_matrix(float **m, int row) 
{ 
    for(int i=0; i<row; i++) 
    { 
     free(m[i]); 
    } 
    free(m); 

} 

但我不知道爲什麼它不工作,我得到這個錯誤:

Windows has triggered a breakpoint in mycode.exe. 

This may be due to a corruption of the heap, which indicates a bug in mycode.exe or any of the DLLs it has loaded. 

This may also be due to the user pressing F12 while mycode.exe has focus. 
+2

請說明你如何使用矩陣'm'。我很確定錯誤不在這個代碼片段中,儘管Visual Studio可能實際上在這個函數中彈出錯誤消息... –

+2

請讓我們看看分配代碼。即您的malloc調用。 –

+0

使用適當的類將解決此問題。即使'std :: vector >'也比'float **'更好。 – MSalters

回答

0

是不是招」最有可能的,你是釋放內存已被分配。檢查分配內存的代碼,或者更好地發佈給我們看。確保你只用有效的指針調用free。另外,請確保你的「新」與「免費」不匹配。

+1

或一個位置被釋放了兩次。 –

+0

@TobiasLangner這是可能的,但似乎不太可能通過OP發佈的freeMatrix代碼來判斷。 –

+0

我只是想補充它的完整性。有人可能會搜索這個問題,並找到這篇文章 - 雖然它不會幫助他解決他的具體問題,但總體而言,這可能會對他有所幫助。 –

相關問題