c++链表的一个malloc问题

浏览:21日期:2023-03-16

问题描述

我定义了一个结构体如下:

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有什么区别,目前我对这部分知识理解较为混乱,网上没找到特别合适的内容希望有朋友能梳理一二,谢谢。

问题解答

回答1:

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

相关文章: