【问题标题】:strcpy causing EXC_BAD_ACCESS?strcpy 导致 EXC_BAD_ACCESS?
【发布时间】:2012-07-27 12:52:07
【问题描述】:

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

我在 strcpy 行得到 EXC_BAD_ACCESS 错误:

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

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

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

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

【问题讨论】:

    标签: objective-c xcode4 exc-bad-access main strcpy


    【解决方案1】:

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

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

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

    【讨论】:

    • 注意上面会保留栈上的内存。如果您需要它生存更长时间,您将需要分配适当的内存块。坦率地说,我从一开始就使用NSString
    猜你喜欢
    • 1970-01-01
    • 2016-11-19
    • 2012-10-02
    • 2011-04-14
    • 2017-03-15
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多