C语言 从函数返回字符串数组时,无法访问地址 0x0 处的内存



我将指向字符*数组的指针发送到函数(args)。 在该函数中,我将数组中的前两个位置的值设置为 malloc'd 字符串。 当我返回到数组本身被 malloc'd 的原始调用函数时,数组的最后一个位置给了我一个"无法访问地址 0x0 的内存"。 我在malloc/realloc/或存储值中做错了什么吗?

调用函数:

int bufspace = 0; /* bytes in table */
    ...
args = emalloc(BUFSIZ); /* initialize array */
bufspace = BUFSIZ;     //size=8192
spots = BUFSIZ / sizeof(char *);
while (*cp != '') //While not at the end
    cp = read_segment(cp, &len, &indollarsign, &argnum, start, &args, &prev_char_escape);
    start = cp;
    len = 0;
    if (argnum + 1 >= spots) {
        args = erealloc(args, bufspace + BUFSIZ);
        bufspace += BUFSIZ;
        spots += (BUFSIZ / sizeof(char *));
        }
    }

调用函数 (read_segment) - 首先调用以存储在位置 0,然后存储在位置 1:

*args[*argnum] = newstr(start, *len); //Generate the string through malloc

在这一行,我在以下位置有字符串:*args[0] 和 *args[1]

但是一旦我回到调用函数args[0] 有一个字符串,但 args[1] 显示"无法访问地址 0x0 的内存"

*args[*argnum]取消引用args[*argnum]处的指针。我想你的意思是

(*args)[*argnum] = newstr(start, *len);

相关内容

  • 没有找到相关文章

最新更新