C中char数组的动态内存分配问题

时间:2015-12-27 10:53:32

标签: 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 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;
    }
}

谢谢!

1 个答案:

答案 0 :(得分:1)

    if (p[i]==NULL) {
        printf("Error in memory allocation.\n");
        return -2;
    }

必须是

{}

某些编码指南要求始终将{{1}}与if语句放在一起(即使只有一个语句),以避免出现此类问题。