小编Kat*_*arn的帖子

使用calloc()设置char数组,完成后也"释放"数组

我正在尝试设置一个字符串数组(在C中,使用Linux).该数组将包含11个字符串(静态长度).我最初将阵列设置为:

char Answers[10][100];
Run Code Online (Sandbox Code Playgroud)

但在我的代码中,我有一个调用fgets(input,sizeof(input),stdin)的部分.当调用这个fgets()部分时,我的Answers数组的最后一个元素被输入的值覆盖(关于答案在堆栈上的位置?).所以现在我试图"锁定"我用于我的Answers数组的内存.我会用吗?

char Answers=calloc(11*sizeof(char));
Run Code Online (Sandbox Code Playgroud)

要么

通过循环运行 -

char Answers[10];
for(c=0;c<=10;c++)
{
    Answers[c]=calloc(1*sizeof(char);
}
Run Code Online (Sandbox Code Playgroud)

另外,当我完成时,我需要使用atexit()来释放分配的内存...因为我无法在atexit()中传递参数,所以最好的方法是什么?

atexit(Free);

void Free()
{
    free(Answers);
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

c arrays free atexit calloc

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

arrays ×1

atexit ×1

c ×1

calloc ×1

free ×1