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

Delete a new variable passed into a function C++

本文关键字:新变量 变量 函数 C++ 删除      更新时间:2023-10-16

我有以下代码:

    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))
    };

在我的析构函数中,删除构成shipVerticessf::Vertex是微不足道的。如何删除传递给这些构造函数的new sf::Vector2f(x, y)

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

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

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