我有這個枚舉類型:自由堆損壞(...)
enum Cell { ALIVE='X', DEAD='O' };
而且我分配一個與它的數組:
h_board = (Cell*) malloc(width*height*sizeof(char));
我認爲我沒有這樣做錯誤,因爲單元格值是字符(我想留在char大小的數據,但我關心可讀性,這就是爲什麼我使用枚舉。)
當free(h_board);
引發異常。在調試模式下,我可以看到堆損壞警告。我想我釋放的內存比我分配的更多,但我看不出爲什麼。我也嘗試free((char*)h_board);
試圖強制char大小釋放,但問題仍然存在。
我該如何解決這個問題?
您正在覆蓋某處。顯示一些代碼? – cnicutar 2012-02-22 13:11:02
h_board的類型是什麼?我認爲它是'Cell *'。 Valgrind告訴你什麼?你可以把最小代碼重新創建這個問題,並告訴我們什麼發生在h_board? – Eregrith 2012-02-22 13:11:35
我還沒有看到任何錯誤,但是您最好使用'sizeof(Cell)'而不是'sizeof(char)'。 – kennytm 2012-02-22 13:12:09