[英]Allocating memory of a 3 Dimentional array using calloc in c
我正在嘗試為[10] [10] [2]的3維字符數組分配內存。 將所有值都設置為空格時,會出現分段錯誤:[0] [2] [1]處為11。 這是代碼:
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
值? 0或1會導致崩潰,而超過2會使它崩潰。 您是否真正在每個地方都使用SIZE
? 否則,您只能calloc
2,而硬編碼為'2'的其他用法...應更改為SIZE
像這樣:
for(i = 0;i < SIZE;i++)
{
for(j = 0; j < SIZE; j++)
{
aiBoard[i][j] = (char*)calloc(SIZE,sizeof(char));
}
}
for(i = 0; i < SIZE; i++)
{
for(j = 0; j < SIZE; j++)
{
for(k = 0; k < SIZE; k++)
{
aiBoard[i][j][k] = ' ';
}
}
}
真的應該有三種尺寸
#define iSIZE (10)
#define jSIZE (10)
#define kSIZE (2)
和
for(i = 0;i < iSIZE;i++)
{
for(j = 0; j < jSIZE; j++)
{
aiBoard[i][j] = (char*)calloc(jSIZE,sizeof(char));
}
}
for(i = 0; i < iSIZE; i++)
{
for(j = 0; j < jSIZE; j++)
{
for(k = 0; k < kSIZE; k++)
{
aiBoard[i][j][k] = ' ';
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.