繁体   English   中英

在c中使用calloc分配3维数组的内存

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM