我有一個非常簡單的一段代碼,有2個結構和一個動態分配。該程序崩潰的「數」初始化。C++動態分配程序崩潰
typedef struct{
int key;
string name;
} TElement;
typedef struct nod {
int cheie;
string nume;
struct nod *stg, *dr;
} NOD;
當我嘗試這樣做
void ABC::inserare_element(TElement e){
NOD *p, *q;
int n;
/* construction nod p*/
n=sizeof (NOD);
p=(NOD*)malloc(n);
p->cheie = e.key;
p->nume = e.name; // on this line the program crashes
感謝
這是C++,你應該使用'new'。 – chris
[相關](http://stackoverflow.com/questions/10857402/why-does-push-back-cause-crash-within-malloced-data/10857432#comment14143202_10857432)。 std :: string是否有構造函數運行?如果沒有,它不存在,你不能像它那樣分配給它。 – GManNickG
你不需要C++中的'typedef'。只要命名你的結構 - 'struct NOD {/*..*/};' –