我试图在c中编写一个程序,为尺寸为n,m的'char'数组分配内存。下面是我尝试但每次运行它,无论我给它什么尺寸,它返回值-2甚至没有打印“内存分配错误。”。 你们觉得怎么样?
#include <stdio.h>
#include <stdlib.h>
int main(void){
int i,j,n,m;
char **p;
scanf("%d %d",&n,&m); //get array dimensions
p=malloc(n*sizeof(char *));
if (p==NULL){
printf("Error in memory allocation.\n");
return -1;
}
for (i=0;i<n;i++){
p[i]=malloc(m*sizeof(char));
if (p[i]==NULL)
printf("Error in memory allocation.\n");
return -2;
}
}
谢谢!
答案 0 :(得分:1)
if (p[i]==NULL) {
printf("Error in memory allocation.\n");
return -2;
}
必须是
{}
某些编码指南要求始终将{{1}}与if语句放在一起(即使只有一个语句),以避免出现此类问题。