strcpy引起EXC_BAD_ACCESS?

4

我正在使用Xcode 4制作一个命令行工具。

在使用strcpy函数的那一行,我遇到了EXC_BAD_ACCESS错误:

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

argv[1] 是 -v(一种“有效”选项),而 argv[2] 是 -z(一种“无效”选项)。

然后我需要更改“invalidOption”的显示方式(打印“错误”消息)。

有任何想法为什么会发生这种情况吗? 如果您需要更多详细信息,请告诉我。

1个回答

5

strcpy不会为你分配任何内存。你试图将你的字符串复制到NULL,这会导致未定义的行为。你需要这样做:

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

请确保invalidOption足够大,能够容纳整个字符串(包括空终止符),否则您将面临相同的问题。如有必要,可以使用动态分配。


请注意,以上代码将在堆栈上保留内存。如果您需要它存活更长时间,您需要分配一个适当的内存块。老实说,我会从一开始就使用 NSString - bbum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接