C分配char数组导致错误的访问运行时异常

时间:2018-11-13 22:08:59

标签: c memory-management runtime

我似乎无法正确地为数组分配内存。该方法将按预期返回,但是运行时异常将终止程序。

使用调试器时出现此异常。

EXC_BAD_ACCESS (code=1, address=0x0)

这是导致问题的方法:

char *progScanner(char *line){

    char originalLine[100];
    strcpy(originalLine, line);
    char *correctLine[100];
    char *segment;
    int i = 0;

    segment = strtok(originalLine," ,()");
    while (segment != NULL){
        printf (" %s",segment);
        correctLine[i++] = segment;
        segment = strtok (NULL, " ,()");
    }

    char *newLine;
    newLine = malloc(100 * sizeof(char));
    int j = 1;
    strcpy (newLine, correctLine[0]);
    while(j<=i){
        strcat(newLine, correctLine[j]);
        j++;
    }

    return newLine;
}

1 个答案:

答案 0 :(得分:0)

当您进入correctLine时,您正在访问j == i数组之外,因为correctLine中的最后一个有效索引是j-1。更改

while(j<=i){

while(j<i){