【问题标题】:Initializing a char *tab[] with malloc/calloc使用 malloc/calloc 初始化 char *tab[]
【发布时间】:2018-10-25 15:12:31
【问题描述】:

我正在尝试初始化一个 char *tab[],这会导致分段错误,我做错了什么?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <float.h>
int main()
{
    char **cle_par = NULL;
    cle_par = (char**) calloc (22, sizeof (char *)+1);
    int y=0;
    for (y=0; y<22; y++);
    {
        cle_par[y]=(char *) malloc(45*sizeof(char));
    }
    strcpy(cle_par[0], "this_is_a_test");
}

【问题讨论】:

  • 错字:多余的分号:for (y=0; y&lt;22; y++); -> for (y=0; y&lt;22; y++)
  • 另一个为什么左大括号应该单独一行的例子。
  • +1 中的sizeof (char *)+1 是什么?
  • 天哪,你是对的.. 我很惊讶没有警告。非常感谢
  • @TsakiroglouFotis:哪个阵列?我只看到一个指针。

标签: c initialization malloc strcpy calloc


【解决方案1】:

您的代码有一个“错字”错误,它使 for 循环无效并使其成为一个空循环。

for (y=0; y&lt;22; y++)<b>;</b>,结尾的分号使循环为空,我相信这不是你的本意。如果你删除它。您的代码应该可以正常工作。

【讨论】:

    猜你喜欢
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 2020-10-08
    • 2019-04-25
    • 2021-02-04
    • 1970-01-01
    相关资源
    最近更新 更多