0

ifプログラムが最初のステートメントに到達したときにセグメンテーション違反が発生する理由がわかりません。

これは、simpleShell プログラムのメソッドであり、格納されている stdin 入力cmdを解析し、空白で解析して、args

ifステートメントを印刷することはありません

void parseCmd(char* cmd, char** args)
{       
    int i;


    printf("----------> Parsed here \n");
    for(i = 0; i < MAX_LINE; i++) {
        args[i] = strsep(&cmd, " ");

        if (args[i][0] == '-') {
            printf("I was here... \n");
        }


        if(args[i] == NULL) break;
    }
}
4

1 に答える 1

1

2 つの明らかな NULL チェックがありません。

  1. に対して NULL をチェックしますargs
  2. strsep()戻り値の NULL をチェックします。

そうしないと、どちらの場合でも NULL ポインターの参照を試みて、未定義の動作が発生する可能性があります。

于 2015-09-14T20:12:19.753 に答える