我试图为102个三维字符数组分配内存.当将所有值设置为空格时,都会出现分段错误: 11 at 1。下面是代码:
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] = ' ';
}
}
}发布于 2014-12-08 02:38:43
您使用的SIZE值是多少?0或1会导致崩溃,超过2会使其崩溃。你在任何地方都在使用SIZE吗?否则,您只使用calloc - ing 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] = ' ';
}
}
}https://stackoverflow.com/questions/27350494
复制相似问题