C中字符数组的动态内存分配问题
我正试图用c语言编写一个程序,为一个维数为n,m的“char”数组分配内存。下面是我尝试过的,但每次运行它时,无论我给它什么维度,它都会返回-2的值,甚至不会在内存分配中出现打印错误。。 你们觉得怎么样C中字符数组的动态内存分配问题,c,arrays,malloc,dynamic-programming,dynamic-memory-allocation,C,Arrays,Malloc,Dynamic Programming,Dynamic Memory Allocation,我正试图用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 a
#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;
}
}
谢谢
if (p[i]==NULL)
printf("Error in memory allocation.\n");
return -2;
一定是
if (p[i]==NULL) {
printf("Error in memory allocation.\n");
return -2;
}
一些编码指南要求始终将{}与if语句放在一起,即使只有一条语句也要放在一起,以避免此类问题。Typo。在最后一个if之后缺少{},因此返回-2总是在循环的第一次执行。非常正确,已编辑。谢谢我是一个傻瓜你想学习使用调试器一步一步地跟踪代码。这通常会告诉您实际发生了什么。现在您的代码无法编译。在计算机上修复代码并再次运行。在给出答案后不要更改问题,因为这可能会导致无法理解答案。因此,我回滚了您的编辑。通过添加内容更新您的问题。谢谢,伙计,现在我觉得自己很傻