【发布时间】:2015-11-06 22:43:28
【问题描述】:
这是我的代码 sn-p 来创建包含 char 数组的二维数组。如果有人能找出可能是什么原因,那就太好了。我曾尝试同时使用malloc() 和calloc() 为二维数组分配内存,但没有任何积极迹象。
代码片段:
char** attrNames = (char **)malloc(3*sizeof(char*))
for (m = 0; m < 3; m++) {
attrNames[m] = (char *)malloc(2 * sizeof(char*));
strcpy(schema->attrNames[m], temp_buff2[m]);
}
我正在尝试分配内存,然后继续循环并再次分配内存并将数据从名为 temp_buff2(具有字符数据)的变量复制到 char 数组中。
【问题讨论】:
-
没错。
(char *)malloc(2 * sizeof(char*))为两个指针分配空间,而不是为它们指向的任何东西。 -
您也可以分配为:
char** attrNames = malloc (3* sizeof *attrNames);。将sizeof与您分配的指针一起使用有助于防止无意的sizeof (type)不匹配。同样attrNames[m] = malloc (2 * sizeof **attrNames);(调整为包括strlen以获得正确的计数) -
我不知道为什么,但它们都不起作用
-
我可以只做strcpy而不分配内存吗?
-
Schema 是一个结构,它包含几个整数成员、几个 char 数组和一个 2D char 数组,这是我要初始化的对象
标签: c arrays pointers memory-management