我试图动态分配结构的阵列中的另一个结构 这里的阵列的动态分配的代码段结构指针
我没有得到任何语法错误,但我得到段错误当我尝试进入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