2012-11-19 34 views
1

我想知道爲什麼在編譯我的代碼在Ubuntu出現ubuntu在代碼塊中的錯誤?

$*** glibc detected *** ./a.out: malloc(): memory corruption: 0x00000000024dd190 ***   

但相同的代碼工作,而不在代碼::塊的任何錯誤,並給了我正確的結果這條消息?我需要你的幫助來解決這個錯誤。

我試過更新編譯器,但那不起作用?!

更新:

執行該語句時出現錯誤:

$first_array = (unsigned long*)malloc(sizeof(unsigned long*)); 

我沒有看到有在任何錯誤,是?

+0

您需要顯示相關的代碼。你有一個內存腐敗錯誤的地方。 – Mat

+0

@Mat,但爲什麼codeblocks編譯它沒有提供任何錯誤! –

+0

內存損壞錯誤在C中是未定義的行爲。未定義的行爲可以做任何事情,包括似乎完美地工作fine_。 – Mat

回答

0

您是決定性的內存大小等於指針的大小不是一個unsigned long,你應該寧願使用:

first_array = (unsigned long*)malloc(sizeof(unsigned long)); 

如果你是一個32位系統上,你的第一個代碼將分配內存中有4個字節,然後你指向一個指向8字節數據結構的指針。您需要分配變量的大小,而不是指針的大小。