我的自定义结构中有std::unordered_map<char, Node*>
。
我想用空map
初始化它。我做错什么了吗?
我尝试了两种初始化,它们都给我相同的结果。
以下声明:
newStructure->map = unordered_map<char, Node*>();
有时会导致成功,此地图的大小为0,应该是这样。大多数情况下,这会在初始化期间失败,并且在没有初始化map
的情况下会生成以下错误:
malloc:释放的指针未分配
这会给我极大的初始std::unordered_map
。地图的大小可以是88029716824088
。
如何正确初始化空std::unordered_map
结构?
我的结构定义如下:
struct Node {
char letter;
unordered_map<char, Node*> next;
bool hasEnd;
static Node* init(char);
}
而且,我的initializer
定义如下:
Node* Node::init(char letter) {
Node *newNode = (Node*) malloc(sizeof(Node));
newNode->letter = letter;
newNode->hasEnd = false;
return newNode;
};
有时,next
的大小会非常大。
答案 0 :(得分:2)
实际上,当您创建地图时,默认情况下它已经是空的
另一方面,在创建C ++对象时,需要使用new
,而不是malloc
。
基本区别在于new
调用对象的构造函数,但malloc
没有。
您可以在此处阅读更多内容:In what cases do I use malloc vs new?