c++ - 读取 argv 时 XCode BAD ACCESS

标签 c++ xcode xcode6 argv

直到几分钟前,我的代码运行起来还很顺畅。我已经尝试重新启动 XCode,我的电脑,但没有任何反应。这是重要的片段:

int main(int argc, const char * argv[]) {

  string input_collection_index;
  string input_directory;
  bool is_retrieval=false;
  bool is_merge = false;


  //Arguments parsing
  for(unsigned i = 1; i < argc; ++i) {
    string param  = argv[i];
    //index file name
    if(param == "--index" || param == "-i") {
      i++;
      input_collection_index = argv[i];
    }
    //index file path
    else if (param == "--directory" || param == "-d") {
      i++;
      input_directory = argv[i];
    }
    else if (param == "--retrieval" || param == "-r") {
      is_retrieval = true;
    }
    else if (param == "--merge" || param == "-m"){
      is_merge = true;
    }

  }
}

这是我的方案: enter image description here

我一直收到以下错误:enter image description here

请注意,错误访问的地址不是 0x00,因此,它不是空的。 XCode 调试器向我显示 argc 的长度正确,并且 argv(至少 argv[0])是正确的字符串(文件路径)。 有什么想法吗?

最佳答案

因此,我认为问题更深层次且与 C++ 相关,而不是 XCode 本身。 在上面的代码片段之后,我创建了一个包含这个成员的类:

unsigned output_buffer_[9999999];

将其更改为

unsigned *output_buffer_;

然后在我的代码中分配它:

output_buffer_ = (unsigned*) malloc(9999999*sizeof(unsigned))

成功了。 可能与编译器如何处理静态分配的数组有关。

关于c++ - 读取 argv 时 XCode BAD ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29738864/

相关文章:

c++ - <iosfwd> header 是什么?

ios - 使用 IB 设计现有应用程序对设备没有影响 (iOS 7.1/XCode 5.1)

swift - 手动添加 Snapkit 到 xcode

iOS8 区域本地化(例如 pt-BR)?

ios - 加载 XCTest 时出错,找不到合适的图像。

c++ - 如何从给定位置开始用另一个字符串覆盖一个字符串的一部分?

C++ 包含字符串和整数的二维数组

c++ - g++ 使用模板时出现重复符号错误(菜鸟问题)

ios - Xcode 在将 iOS 应用程序上传到 App Store 时尝试匹配框架包 ID

swift - 下限 < A < 上限