代码之家  ›  专栏  ›  技术社区  ›  MortalMan

在不同函数中malloced的Realloc指针

  •  2
  • MortalMan  · 技术社区  · 9 年前

    我有这个功能:

    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 它的指针在前一个函数中被malloced了。当我尝试重新分配行[1]时,我得到了以下错误:

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

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

    1 回复  |  直到 9 年前
        1
  •  2
  •   Danny_ds    9 年前

    lines[1] 在for循环中递增。您应该保留从 malloc() 并将其与 realloc() .

    而且 重新分配() 可能失败,因此您应该存储 重新分配() 在临时指针中,并且仅在成功时将其传输到原始指针。