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足够大以容纳整个字符串(包括空终止符),否则您最终会遇到同样的问题。如有必要,您可以使用动态分配。

于 2012-07-29T17:58:02.030 回答