C ++ std :: allocator :: allocate()给了我一个坏指针

时间:2014-02-20 01:22:07

标签: c++ pointers

我正在用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;
    }
}

其中firstcurrent的类型为Node*。 提前谢谢!

1 个答案:

答案 0 :(得分:3)

std::allocator分配原始未构造的存储空间。要使用存储空间,您必须使用.construct()

a.construct(n, /* initializer */);