【发布时间】:2022-01-16 12:46:02
【问题描述】:
今天我在分配 char 数组(字符串数组)时遇到问题,我编写了这个函数来执行此操作,但是在打印数组时,我遇到了一些内存问题(例如 Segmentation Fault)。 这是我的尝试:
char **alloca_memoria(char **linguaggio,
int n_sequenze,
int *errore)
{
int i;
linguaggio = (char**) calloc( n_sequenze,
sizeof(char*));
if (linguaggio != NULL)
{
for ( i = 0;
i < n_sequenze;
i++ )
{
linguaggio[i] = (char*) calloc( MAX_SEQ ,
sizeof(char));
if ( linguaggio[i] == NULL )
*errore = 1;
else
*errore = 0;
}
}
else
*errore = 1;
return linguaggio;
}
我的目的只是让它分配内存并返回值错误以检查分配是否成功。 我真的找不到我做错了什么。
附言n_sequenze 是字符串的实际数量,MAX_SEQ 是每个字符串的最大大小。
【问题讨论】:
-
@WhozCraig 所以在函数中使用 calloc 只是在该函数内部分配内存,而不是在程序内部全局分配内存?所以如果我想让程序工作我必须在主函数中分配内存?
-
不。阅读 Vlad 的答案,可能会得到一本关于 C 的好书。
标签: c segmentation-fault dynamic-memory-allocation c-strings function-definition