我試圖讀取文件中的行由行,並存儲在一個名爲「命令」對象行數據(持有什麼指令的機器人對象可以理解的信息)整數遞增崩潰應用
下面是讀取功能(C++):
int robot::readfile(const char fname[]) {
FILE *rf;
rf = fopen(fname, "r");
if (rf != NULL) {
int idx = 0;
char record[161];
while ((this->cmd_count < this->cmd_size)
&& (fgets(record, 160, rf) != NULL)) {
command tmp_cmd(record);
this->cmds[idx++] = tmp_cmd;
}
} else {
perror(fname);
}
fclose(rf);
return 1;
}
因此,基本上,在上面的代碼中,當我嘗試通過1遞增變量「IDX」(使用語法:IDX ++),它基本上只是崩潰中的應用。
任何想法,爲什麼?
編輯: 作爲reqested由評論員:
void robot::cmd_malloc(int size) {
// most likely will cause problems if size is below 1.
if (size < 1) {
return;
}
try {
this->cmds = new command[size];
this->cmd_size = size;
this->cmd_count = 0;
} catch (std::bad_alloc) {
// bad allocation exception.
this->cmds = NULL;
cout << "bad_alloc:" << (sizeof(command) * size) << " in 'robot::cmd_malloc'." << endl;
}
}
你確定這是導致崩潰的原因,而不是你索引到一個沒有正確初始化的'cmds'表的事實嗎?我們可以看到初始化'cmds'的代碼嗎? – templatetypedef 2012-03-27 00:55:33
你永遠不會增加'this-> cmd_count'? – 2012-03-27 00:57:09
是的,我確定。我甚至試圖從數組中取出增量。當然 - 現在更新問題! – TheAJ 2012-03-27 00:58:02