3

Xcode 4 を使用してコマンドライン ツールを作成しています。

strcpy の行で EXC_BAD_ACCESS エラーが発生します。

char *invalidOption = NULL;
strcpy(invalidOption, argv[2]);

argv[1] は -v (「有効な」オプション) であり、argv[2] は -z (「無効な」オプション) です。

次に、表示上の理由から「invalidOption」を変更する必要があります(「エラー」メッセージを出力します)。

なぜこれが起こっているのかについてのアイデアはありますか? 詳細が必要な場合はお知らせください。

4

1 に答える 1

5

strcpyメモリを割り当てません。文字列を にコピーしようとしていますがNULL、未定義の動作が発生します。次のようなものが必要です:

char invalidOption[10];
strcpy(invalidOption, argv[2]);

invalidOption文字列全体(nullターミネータを含む)を保持するのに十分な大きさであることを確認してください。そうしないと、同じ問題が発生します。必要に応じて動的割り当てを使用できます。

于 2012-07-29T17:58:02.030 に答える