gpt4 book ai didi

c - 我在 GNU GCC 编译器上运行代码时遇到问题,而它在 VC++ 编译器上运行良好

转载 作者:太空宇宙 更新时间:2023-11-04 06:34:02 26 4
gpt4 key购买 nike

printf("\n enter your choice\n 1 to ask user for the size of game board\n 2 tp get input from a file\n");
scanf("%d",&choice);
if(choice==1)
{
printf("\n enter number of rows and columns");
scanf("%d%d",&row,&col);
mat=(char**)malloc(row*sizeof(char));
label=(char**)malloc(row*sizeof(char));
for(i=0;i<row;i++)
{
mat[i]=(char*)malloc(col*sizeof(char));
label[i]=(char*)malloc(col*sizeof(char));
}

for(i=0;i<row;i++)
{

for(j=0;j<col;j++)
{
temp=rand()%5;

mat[i][j]=color_codes[temp];
label[i][j]=' ';
}

}
}

此 C 语言语句在我的 visual studio IDE 上运行良好,但是当我尝试在 CODE BLOCKS IDE 上运行相同的语句时,这件事突然崩溃了。我们将不胜感激任何类型的帮助

最佳答案

有一个简单的方法可以避免这个错误,即在执行 malloc 时乘以错误的值:

→ 始终与数组元素类型的 sizeof 相乘,sizeof(*var)

 char **mat;

mat = malloc (row * sizeof(*mat));

这样你就再也不会做错乘法了。另一个优势:如果您决定将 mat 的类型更改为 double,您只需更改一个地方:它的声明。

而且您不应该强制转换 malloc 返回值。 It's been hashed to death on SO why .

关于c - 我在 GNU GCC 编译器上运行代码时遇到问题,而它在 VC++ 编译器上运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17010778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com