读取argv时XCode BAD ACCESS

时间:2015-04-20 03:27:25

标签: 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,因此,它不是null。 XCode调试器向我显示argc具有正确的长度,并且argv(至少是argv [0])是正确的字符串(文件路径)。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

所以,问题是更深层次,与C ++有关,而不是XCode本身,我想。 在上面的代码片段之后,我创建了一个拥有此成员的类:

unsigned output_buffer_[9999999];

将其更改为

unsigned *output_buffer_;

然后在我的代码中将其分配给:

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

让它发挥作用。 也许与编译器如何处理静态分配的数组有关。