全部
我正在编写一个非常简单的动态二维数组声明的 C 代码,并用它初始化它,memset
然后打印出该值。我的代码如下:
float **env;
int i,j,num;
printf("Enter a number : \n");
scanf("%d",&num);
env = (float **)malloc(num*sizeof(float *));
for(i=0;i<num;i++)
{env[i] = (float *)malloc(num*sizeof(float));}
memset(env, 0, sizeof(float)*num*num);
for(i=0;i<num;i++)
{ for (j=0;j<num;j++)
{
printf("%f\t",env[i][j]);
if (j == num -1)
{ printf("\n\n");}
}
}
for(i=0;i<num;i++)
{free(env[i]);
}
free(env);
当我编译程序时,没有编译错误或警告,但是当我尝试打印出这些值时,我无法打印它们。然后我调试了程序,在memset
语句之后 env 2D 变量显示类似于
CXX0030: Error: expression cannot be evaluated
,当我打印值时,会出现一个窗口显示
Unhandled exception at 0x008b1e27 in ***.exe: 0xC0000005: Access violation reading location 0x00000000.
我尝试使用 2 个 for 循环将 2D 数组 env 显式初始化为 0,它工作得很好,我也能够打印值,但是当我使用memset
. 如果有人可以帮助我,那将非常有帮助。谢谢你。