我用过this web link as reference .
以下代码生成此调试错误:
我找不到错误。请帮助我。
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#define ROWS 3
#define COLS 5
main()
{
char ** my2dArray = NULL;
int i=0;
int j=0;
my2dArray = (char**) malloc(sizeof(char) * ROWS);
for(i=0 ; i<ROWS ; i++)
{
my2dArray[i] = (char*) malloc(sizeof(char) * COLS);
}
for(i=0 ; i<ROWS ; i++)
{
for(j=0 ; j<COLS ; j++)
{
my2dArray[i][j] = (i + 1) * (j + 1);
}
}
for(i=0 ; i<ROWS ; i++)
{
for(j=0 ; j<COLS ; j++)
{
printf("%d, ", my2dArray[i][j]);
}
printf("\n");
}
for(i=0 ; i<ROWS ; i++)
{
free(my2dArray[i]);
}
free(my2dArray);
system("PAUSE");
}
最佳答案
您正在 my2dArray[i]
中存储 char*
类型的项目:
my2dArray[i] = (char*) malloc(sizeof(char) * COLS);
char
是 1 个字节,char*
是 4 或 8 个字节,所以您目前没有为 my2dArray
分配足够的内存,将其更改为:
my2dArray = (char**) malloc(sizeof(char*) * ROWS);
关于c - 请告诉我这段 C 中二维动态数组代码中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8457572/