功能返回时EXC_BAD_ACCESS

时间:2013-08-20 17:18:08

标签: c++ exc-bad-access

我对代码中的一个错误感到困惑,当函数调用完成并退出函数时,我得到一个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)填充。

知道为什么会这样吗?我没有对自己进行任何内存分配,因为即使我将大部分代码注释掉,也会发生错误,我认为不是那样......感谢您提供任何反馈。

0 个答案:

没有答案