【发布时间】:2014-05-20 15:43:08
【问题描述】:
作为学校作业的一部分,我编写了以下代码。它根据学生 ID 对对象指针数组进行排序,这是一个介于 100 和 999 之间的私有 int。但由于某种原因,我在 VS12 中调试时 getId 函数出现以下错误:
Unhandled exception at 0x001066F6 in task2.exe:
0xC0000005: Access violation reading location 0x0000000C.
这是使用getId的代码:
if (nr_of_students > 1) {
int pre = nr_of_students - 1;
int current = nr_of_students;
Student* temp;
// This pause will run:
system("pause");
while (pre > 0 && students[pre]->getId() > students[current]->getId()) {
// This pause will NOT run:
system("pause");
temp = students[current];
students[current] = students[pre];
students[pre] = temp;
pre--;
current--;
}
}
Student类的代码:
class Student : public Person {
private:
int id;
/* Other variables */
public:
/* Constructors and functions */
int getId() {
return id;
}
};
这到底是怎么回事?
【问题讨论】:
-
'这到底是怎么回事?'您很可能正在取消引用无效的 (
NULL) 指针。 -
也许内置调试器会有所帮助?比如可能告诉你哪一行产生了错误?
-
我只有在使用调试器时才会得到错误,否则它只会崩溃。调试器说错误出现在从 getId 函数返回 id 的那一行。
标签: c++ visual-c++ visual-studio-2012