删除传递到函数C++中的新变量

删除传递到函数C++中的新变量,c++,memory-management,memory-leaks,sfml,C++,Memory Management,Memory Leaks,Sfml,我有以下代码: shipVertices = { //This is going to cause a memory leak new sf::Vertex(new sf::Vector2f(0, 0)), new sf::Vertex(new sf::Vector2f(.2, .4)), new sf::Vertex(new sf::Vector2f(.15, -.8)), new sf::

我有以下代码:

    shipVertices = { //This is going to cause a memory leak
            new sf::Vertex(new sf::Vector2f(0, 0)),
            new sf::Vertex(new sf::Vector2f(.2, .4)),
            new sf::Vertex(new sf::Vector2f(.15, -.8)),
            new sf::Vertex(new sf::Vector2f(0, -1)),
            new sf::Vertex(new sf::Vector2f(-.15, -.8)),
            new sf::Vertex(new sf::Vector2f(-.2, .4))
    };
在我的析构函数中,删除构成ShipVertex的sf::Vertex很简单。如何删除传递给这些构造函数的新sf::Vector2fx,y


我甚至需要删除这些吗?我认为它们可能会以某种方式在内部处理。

查看sfml文档中的API,sf::Vertex的构造函数是Vertex const Vector2f&thePosition,它需要一个常量引用,这样您也可以临时传入。您尝试为它提供指针,这是调用新操作符的结果,因此它甚至不应该编译


所以不,你不需要销毁向量,因为你根本不需要动态分配它们。

顶点常量向量2f&位置,你不需要新建它们来传递它们,只需传入sf::Vector2f0.,0。。。temporaries看起来像是用c++11表达的java。你能回答我的问题吗?我可以接受这个答案吗?嗯,如果你说的是,没有一个构造函数使用普通指针,这会使你的代码不正确。你能指出你正在使用的sf::Vector的文档吗?我正在使用版本2.1的文档,我明白Galik说的,他正确地回答了我的问题。我在一家java商店工作,所以我有一个坏的倾向,就是混合使用这两种语言的语法。