Heim  >  Fragen und Antworten  >  Hauptteil

Ein Malloc-Problem in einer verknüpften C++-Liste

Ich habe eine Struktur wie folgt definiert:

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

In dieser Struktur gibt es einen Vektor, und jetzt möchte ich ihn als verknüpfte Liste verwenden. Ich bin mir nicht sicher, wie ich den Vektor mallocieren soll.

Früher habe ich zufällig eine 1000 mallociert, und manchmal traten die folgenden Probleme auf:

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

Außerdem weiß ich nicht, ob ich es auf diese Weise verwenden kann:

    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;

Und was ist der Unterschied zwischen diesem Teil des Wissens? Ich habe im Internet keine besonders geeigneten Inhalte gefunden. Vielen Dank.

習慣沉默習慣沉默2707 Tage vor798

Antworte allen(1)Ich werde antworten

  • typecho

    typecho2017-06-14 10:53:40

    永远记住C++中的动态内存分配是和指针相关的,举例来说,要访问一个int型指针所指的内容,其内存必须是被分配的。这意味着如果一个指针不是用&(取址)或者赋值被初始化,那么它必须用new或者malloc之类的动态内存分配手段去初始话,保证指针所指内存存在。对于vector 这种来说,你既可以用vector<T> name来声明一个vector,又可以用vector<T > * p = new vector<T> 来声明并定义一个指向vector的指针。

    Antwort
    0
  • StornierenAntwort