Objective c strcpy导致EXC\u访问错误?

Objective c strcpy导致EXC\u访问错误?,objective-c,xcode4,exc-bad-access,main,strcpy,Objective C,Xcode4,Exc Bad Access,Main,Strcpy,我正在使用Xcode 4制作一个命令行工具 我在strcpy行上得到EXC\u BAD\u访问错误: char *invalidOption = NULL; strcpy(invalidOption, argv[2]); argv[1]是-v(一个“有效”选项),argv[2]是-z(一个“无效”选项) 然后,出于显示原因,我需要更改“invalidOption”(打印“错误”消息) 你知道为什么会这样吗? 如果您需要更多详细信息,请告诉我。strcpy不会为您分配任何内存。您试图将字符串复制

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

我在strcpy行上得到EXC\u BAD\u访问错误:

char *invalidOption = NULL;
strcpy(invalidOption, argv[2]);
argv[1]是-v(一个“有效”选项),argv[2]是-z(一个“无效”选项)

然后,出于显示原因,我需要更改“invalidOption”(打印“错误”消息)

你知道为什么会这样吗?
如果您需要更多详细信息,请告诉我。

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

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

只需确保
invalidOption
足够大,可以容纳整个字符串(包括空终止符),否则会出现同样的问题。如果需要,您可以使用动态分配。

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

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

只需确保
invalidOption
足够大,可以容纳整个字符串(包括空终止符),否则会出现同样的问题。如有必要,您可以使用动态分配。

请注意,上述操作将保留堆栈上的内存。如果您需要它生存更长时间,您将需要分配适当的内存块。坦白地说,我从一开始就使用
NSString
。请注意,上面的代码将在堆栈上保留内存。如果您需要它生存更长时间,您将需要分配适当的内存块。坦白地说,我从一开始就使用
NSString