XCode 读取 argv 时访问错误

XCode BAD ACCESS when reading 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;
    }

  }
}

这是我的方案:

我不断收到以下错误:

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

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

unsigned output_buffer_[9999999];

将其更改为

unsigned *output_buffer_;

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

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

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