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

时间:2012-04-21 19:12:15

标签: c malloc

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

调用功能:

int bufspace = 0; /* bytes in table */

    ...

args = emalloc(BUFSIZ); /* initialize array */
bufspace = BUFSIZ;     //size=8192
spots = BUFSIZ / sizeof(char *);

while (*cp != '\0') //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 *));
        }
    }

Called Function(read_segment) - 首先调用存储在位置0然后存储在位置1:

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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