Un problème malloc dans la liste chaînée C++
習慣沉默
習慣沉默 2017-06-14 10:51:40
0
1
837

J'ai défini une structure comme suit :

typedef struct CommandNode {
    int type;
    vector<string> command;
    CommandNode *next;
} CommandList,*CommandListNodes;

Il y a un vecteur dans cette structure, et maintenant je veux l'utiliser comme liste chaînée. Je ne sais pas comment mallocer le vecteur.

J'avais l'habitude de mallocer un 1000 au hasard, et parfois les problèmes suivants survenaient :

malloc: *** error for object 0xffbbe8909090ffff: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

De plus, je ne sais pas si je peux l'utiliser de cette façon :

    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;

Et quelle est la différence entre cela et malloc ? Actuellement, ma compréhension de cette partie des connaissances est relativement confuse. Je n'ai pas trouvé de contenu particulièrement adapté sur Internet. J'espère que certains amis pourront faire le tri.

習慣沉默
習慣沉默

répondre à tous(1)
typecho

N'oubliez pas que l'allocation dynamique de mémoire en C++ est liée aux pointeurs. Par exemple, pour accéder au contenu pointé par un pointeur int, sa mémoire doit être allouée. Cela signifie que si un pointeur n'est pas initialisé à l'aide de & (adresse) ou d'une affectation, il doit alors être initialisé à l'aide de méthodes d'allocation de mémoire dynamique telles que new ou malloc pour garantir que la mémoire pointée par le pointeur existe. Pour les vecteurs, vous pouvez soit utiliser vector<T> name pour déclarer un vecteur, soit utiliser vector<T> * p = new vector<T>

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal