搜尋

首頁  >  問答  >  主體

c++鍊錶的一個malloc問題

我定義了一個結構體如下:

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

這個結構體中有一個vector,現在想當作鍊錶使用,我不是很清楚對於vector該如何malloc。

自己之前隨便malloc一個1000,有時候會出現下面這樣的問題:

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

另外自己不知道這樣使用可以不可以:

    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;

以及和malloc有什麼差別,目前我對這部分知識理解較為混亂,網路上沒找到特別合適的內容希望有朋友能梳理一二,謝謝。

習慣沉默習慣沉默2744 天前828

全部回覆(1)我來回復

  • typecho

    typecho2017-06-14 10:53:40

    永遠記住C++中的動態記憶體分配是和指標相關的,舉例來說,要存取一個int型指標所指的內容,其記憶體必須是被分配的。這意味著如果一個指標不是用&(取址)或賦值被初始化,那麼它必須用new或malloc之類的動態記憶體分配手段去初始話,保證指標所指記憶體存在。對於vector 這種來說,你既可以用vector name來宣告一個vector,又可以用vector * p = new vector 來宣告並定義一個指向vector的指標。

    回覆
    0
  • 取消回覆