我試圖動態分配結構的陣列中的另一個結構 這裏的陣列的動態分配的代碼段結構指針
我沒有得到任何語法錯誤,但我得到段錯誤當我嘗試進入STR1
有人能解釋一下爲什麼會出現分段錯誤,並且在這樣的情況在內存發生在動態分配什麼
struct A {
string str1;
string str2;
}
struct B {
int count;
A* A_array;
}
void GetB (B** b)
{
*b = (B*) malloc(1*sizeof(B));
cout << "Enter count";
cin >> (**b).count;
(**b).A_array = (A*) malloc((**b).count*sizeof(A));
cout << "Enter str1";
cin >> (**b).A_array[0].str1;
cout << "Enter str2";
cin >> (**b).A_array[0].str2;
}
int main(){
B* b;
GetB(&b);
}
的C多麼可怕的混合和C++ – 2013-03-08 17:20:54
是否有一個原因,爲什麼使用了'malloc',而不是'new'?通常,如果您使用C++進行編程,則需要實際使用C++。 – Cornstalks 2013-03-08 17:21:05
從決定你是否在寫C或C++開始。如果你正在編寫C,不要使用'cin'或'cout',也不要使用'malloc'來返回。如果你正在編寫C++,根本不要使用'malloc',並且使用'std :: vector'而不是你的home-rolled模仿。 – 2013-03-08 17:21:53