我試圖爲[10] [10] [2]的三維字符數組分配內存。將所有值設置爲空格時,會出現分段錯誤:[11]位於[0] [2] [1]。 下面是代碼:使用c中的calloc分配3維數組的內存
aiBoard =(char ***) calloc(SIZE,sizeof(char **));
for(i = 0; i < SIZE;i++)
{
aiBoard[i] = (char **)calloc(SIZE, sizeof(char*));
}
for(i = 0;i < SIZE;i++)
{
for(j = 0; j < 2; j++)
{
aiBoard[i][j] = (char*)calloc(2,sizeof(char));
}
}
for(i = 0; i < SIZE; i++)
{
for(j = 0; j < SIZE; j++)
{
for(k = 0; k < 2; k++)
{
aiBoard[i][j][k] = ' ';
}
}
}
你混'SIZE'和'2'的第二級。 ('j') – user13500 2014-12-08 02:33:52
你實際上分配了維數'[10] [2] [2]' - 把第一個'j <2'改成'j <10'。擁有一組嵌套循環而不是其中三組會更清楚。 – 2014-12-08 02:39:44
我明白你的意思,但它分配給很多內存。 – 2014-12-08 02:40:10