【问题标题】:Malloc an array of string arrays in C在 C 中 malloc 一个字符串数组的数组
【发布时间】:2014-08-26 17:56:19
【问题描述】:

我有一个由字符串数组组成的数组:

char ***t = NULL;

我用字符串s动态填充它,所以我使用realloc这样的函数:

int sumchars = 0;
for i, j... :
   s = result(i, j);
   sumchars += strlen(s);
   t = realloc(t, sumchars * sizeof(char));
   t[i][j] = s;

这给了我一个分段错误。请问你知道为什么吗?

【问题讨论】:

    标签: c arrays char segmentation-fault malloc


    【解决方案1】:

    在这种情况下无需使用realloc。试试这个:

    t = realloc(t, ROW*sizeof(char**));   
    for(int i = 0; i < ROW; i++)
    {
        t[i] = NULL;
        t[i] = malloc(COL*sizeof(char *));
    }
    for(...)
    {
        s = result(i, j);
        t[i][j] = s;
    }    
    

    【讨论】:

    • 谢谢!如果我不需要使用realloc,我该怎么办?
    • 使用malloc。使用我已经解释的方法,可以将任意长度的字符串分配给t[i][j]
    • 所以我通过更改 malloc 中的 realloc 来使用您消息的最后一段代码?
    • @Arnaud;更新了答案。
    • 对不起,我不明白...我必须这样做吗 t = malloc(sizeof(char**));对于每个 i, j??
    猜你喜欢
    • 1970-01-01
    • 2016-01-22
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 2017-03-29
    • 2012-08-15
    相关资源
    最近更新 更多