直到几分钟前,我的代码才像魅力一样运行。我已经尝试重新启动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,因此,它不是null。 XCode调试器向我显示argc具有正确的长度,并且argv(至少是argv [0])是正确的字符串(文件路径)。 有什么想法吗?
答案 0 :(得分:1)
所以,问题是更深层次,与C ++有关,而不是XCode本身,我想。 在上面的代码片段之后,我创建了一个拥有此成员的类:
unsigned output_buffer_[9999999];
将其更改为
unsigned *output_buffer_;
然后在我的代码中将其分配给:
output_buffer_ = (unsigned*) malloc(9999999*sizeof(unsigned))
让它发挥作用。 也许与编译器如何处理静态分配的数组有关。