我對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