我被代码中的一个错误所困扰,当函数调用完成并退出函数时,我得到一个 EXC_BAD_ACCESS。这是一段相当长的代码,所以我将尝试对其进行缩写。我有这样的课:
class BigClass {
public:
// some class members
HelperClass object1; // this class describes a particular type of graph
HelperClass object2;
BigClass(int n, int m, long double epsilon,
long double numerical_accuracy_tol, ...); // calls constructor for obj1, 2
void GenerateInstance(); // Populates graphs for obj 1 and 2
// some more stuff
}
GenerateInstance()
好像:
void BigClass::GenerateInstance() {
// generate matrix m1
object1.PopulateGraph(m1);
// generate some matrix m2
object2.PopulateGraph(m2);
}
当我运行它时,我可以EXC_BAD_ACCESS
. 如果我一步一步调试,它会运行object2.PopulateGraph(m2)
,但是当它退出时,我会崩溃。即使从 PopulateGraph() 中删除所有代码并打印出测试消息,或者即使我还删除了生成矩阵或填充 object1 的代码部分,也会发生同样的事情。使它不给出错误的唯一方法是如果我运行
void BigClass::GenerateInstance() {
// everything commented out
object2.PopulateGraph(); // Populate graph empty
}
HelperClass
好像
class HelperClass {
public:
int num_partitions_;
long double numerical_accuracy_tolerance_;
vector<SomeOtherObject> subgraphs_;
HelperClass(int num_partitions, long double numerical_accuracy_tolerance);
}
HelperClass::HelperClass(int num_partitions, long double numerical_accuracy_tolerance) {
num_partitions_ = num_partitions;
numerical_accuracy_tolerance_ = numerical_accuracy_tolerance;
}
该subgraph_
成员由 填充PopulateGraph(<vector<vector<long double> > m1)
。
知道为什么会这样吗?我没有自己做任何内存分配,而且由于即使我注释掉我的大部分代码也会出现错误,我不认为它可能是......感谢您的任何反馈。