【问题标题】:Realloc pointer that is malloced in different function分配在不同函数中的 Realloc 指针
【发布时间】:2016-04-24 09:25:48
【问题描述】:

我有这个功能:

static void unfoldLines(char **pbuff, char **lines, int foldCount) {
    int i, j;

    for(i = 1; i <= foldCount; i++) {
        removeEOL(lines[i]);
        for(j = 0; j < strlen(lines[i]); j++) {
            while(isspace(lines[i][j])) {
                lines[i]++;
            }
        }
    }

    lines[1] = realloc(lines[1], sizeof(char) * (strlen(lines[1]) +
                strlen(lines[2]) + 1));
    exit(0);
}

lines 并且它的指针已经在之前的函数中分配了。当我尝试重新分配行 [1] 时,我收到此错误:

malloc: *** error for object 0x7fcec0404fe1: pointer being realloc'd was not allocated

我知道它已经被分配了,为什么不能在这个函数中重新分配呢?

【问题讨论】:

  • 因为它增加了指针。
  • 废话!我应该 a) 不增加指针还是 b) 有办法解决这个问题吗?
  • 它移动每个字符。
  • 我知道增加指针会改变地址,使我能够重新分配/释放它。我增加指针以删除任何前导空格。我应该在这里做什么?

标签: c pointers memory malloc realloc


【解决方案1】:

lines[1] 在 for 循环中递增。您应该保留从malloc() 返回的原始指针,并将其与realloc() 一起使用。

另外,realloc() 可能会失败,因此您应该将realloc() 的返回值存储在一个临时指针中,并且只有在成功时才将其转移到原始指针。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-08
    • 2021-09-02
    • 1970-01-01
    • 2013-04-18
    • 2015-02-04
    • 2012-03-15
    • 1970-01-01
    • 2015-07-13
    相关资源
    最近更新 更多