Rumah > Soal Jawab > teks badan
Saya mentakrifkan struktur seperti berikut:
typedef struct CommandNode {
int type;
vector<string> command;
CommandNode *next;
} CommandList,*CommandListNodes;
Terdapat vektor dalam struktur ini, dan sekarang saya mahu menggunakannya sebagai senarai terpaut Saya tidak pasti cara untuk memallokkan vektor.
Saya pernah malloc 1000 secara rawak, dan kadangkala masalah berikut akan berlaku:
malloc: *** error for object 0xffbbe8909090ffff: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Selain itu, saya tidak tahu sama ada saya boleh menggunakannya dengan cara ini:
CommandListNodes listNodes = new CommandList;
CommandListNodes p = listNodes;
p->command.push_back("121212");
p->type=100;
p->next=new CommandList;
p = p->next;
p->command.push_back("343434");
p->type=200;
p->next=new CommandList;
p = p->next;
Dan apakah perbezaannya dengan malloc pada masa ini, pemahaman saya tentang bahagian pengetahuan ini agak mengelirukan. Saya tidak menemui sebarang kandungan yang sesuai dalam talian.
typecho2017-06-14 10:53:40
Sentiasa ingat bahawa peruntukan memori dinamik dalam C++ adalah berkaitan dengan penunjuk Contohnya, untuk mengakses kandungan yang ditunjukkan oleh penunjuk int, memorinya mesti diperuntukkan. Ini bermakna jika penunjuk tidak dimulakan menggunakan & (alamat) atau tugasan, maka ia mesti dimulakan menggunakan kaedah peruntukan memori dinamik seperti baru atau malloc untuk memastikan bahawa memori yang ditunjuk oleh penuding wujud. Untuk vektor, anda boleh menggunakan nama vektor<T> untuk mengisytiharkan vektor, atau anda boleh menggunakan vektor<T>