我对C++相当陌生,而且我一直使用类似于以下代码的指针分配来获得分段错误,我知道这意味着我正在访问尚未分配的内存......但是我看不出其中:e指针分配和分段错误
我有两个类:
class ClassA{ //class a decl.
ClassB** oArray;
unsigned int x;
public:
ClassA(unsigned int X);
void oMember(ClassB* classb);
}
ClassA::ClassA(unsigned int X){ //Constructor for class a
x = X;
oArray = new ClassB* [x];
for (unsigned int i = 0; i < x; i++){
oArray = NULL;
}
}
class ClassB{ //rough decl of class B
public:
getId();
}
我有一个类的成员函数,它在一个指向另一个类是这样的:
void ClassA::oMember(ClassB* classb){
unsigned int cID = classb.getId(); //defined in class b
oArray[cID] = classb; //if cID is less than x defined in constructor, is this legal?
}
我只是想Ť o将数组的cIDth成员指向classb。
我不断收到与上述类似的分配的分段错误。我不知道为什么,我打印了cID,它肯定小于我们在ClassA构造函数中声明的数组的大小。
如果你能帮助我理解为什么这项任务是非法的或为什么即时通讯分段故障...你的援助是非常感谢。
你应该遵循的东西,因为你的课是分配内存:[规则三](http://stackoverflow.com/questions/4172722/what-is-the-rule-of-reeree)。在另一个说明中,'ClassB * classb){... classb.getId();'不应该编译。 – chris 2012-07-22 16:27:00
如果您发布的代码可以帮助我们重现问题(代码听不会编译),那么您会更容易。否则,代码有太多错误,我们不可能真正帮助你。 – pmr 2012-07-22 16:29:59
@pmr,好吧我会发布代码 – anpatel 2012-07-22 16:32:15