爲什麼執行此代碼時堆會損壞?我還沒有用過很多內存分配。嘗試釋放二維數組時堆損壞
#include <stdlib.h>
void main()
{
char **field, x, _fieldsX, _fieldsY;
_fieldsX = 8;
_fieldsY = 16;
// Allocation
field = malloc(sizeof(char*) * _fieldsX);
for (x = 0; x < _fieldsY; x++)
field[x] = malloc(sizeof(char) * _fieldsY);
// Freeing
for (x = 0; x < _fieldsY; x++)
free(field[x]);
free(field);
}
令人難以置信,多快我得到這麼多答案!偉大的社區! 是否可以刪除問題?這一點非常明顯 - 我認爲這對其他人來說不是很有用。 – user1771164
1)int main(void)2)不要使用帶前導下劃線的變量名,它們是保留的。 3)按照定義,sizeof(char)== 1。 4)避免使用char作爲索引;編譯器應該警告這一點。 – wildplasser
1)我知道我必須這樣做一個適當的控制檯應用程序。此代碼將成爲MC的應用程序的一部分。 2)謝謝。不知道。 3)對。我只是總是使用sizeof。這是一個性能劣勢? 4)爲什麼我不應該這樣做來節省內存? – user1771164