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

时间:2014-10-02 21:22:39

标签: 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::Vertex(new sf::Vector2f(0, -1)),
            new sf::Vertex(new sf::Vector2f(-.15, -.8)),
            new sf::Vertex(new sf::Vector2f(-.2, .4))
    };

在我的析构函数中,删除组成sf::Vertex的{​​{1}}是微不足道的。如何删除我传递给那些构造函数的shipVertices

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

1 个答案:

答案 0 :(得分:0)

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

因此,您不需要销毁向量,因为您根本不需要动态分配它们。