我正在用C ++重新创建一个链表,并在重载+ =运算符时得到一个坏指针。我想我只是以错误的方式使用分配器,但我可能是错的。
以下是上下文:
void MyLinkedList::operator+=( const std::string& s )
{
allocator<Node> a;
Node* n = a.allocate(1);
Node node(s);
(*n) = node;
if ( first == NULL )
first = n;
else
{
(*current).SetNext(n);
current = n;
}
}
其中first
和current
的类型为Node*
。
提前谢谢!
答案 0 :(得分:3)
std::allocator
分配原始未构造的存储空间。要使用存储空间,您必须使用.construct()
。
a.construct(n, /* initializer */);