繁体   English   中英

使用GLM时发生内存泄漏

[英]Memory leak, when using GLM

我在SDL + OpenGL项目中使用glm (Opengl Math)。 但是我注意到,代码可能会泄漏内存。 这是一个例子:

#include <glm/glm.hpp>

int foo()
{
        glm::vec4 Position = glm::vec4(glm::vec3(0.0), 1.0);
        glm::mat4 Model = glm::mat4(1.0);
        Model[4] = glm::vec4(1.0, 1.0, 0.0, 1.0);
        glm::vec4 Transformed = Model * Position;
        return 0;
}

在第一行中,我们创建了一个新的glm::vec3实例,但是在函数的最后,我们没有释放分配的内存。 如果我在循环中调用函数foo ,那么它将泄漏内存吗?

由于实例不是使用new创建的,因此它们将被放置在堆栈中,而不是堆中。 因此,当清除foo使用的堆栈时,将回收这些实例的内存。

您创建的变量具有自动存储期限 ,这意味着它们超出范围时将自动清除。

对于临时的glm::vec3 ,它是在语句末尾。 因此,这里没有内存泄漏。

内存泄漏只能通过使用动态存储持续时间 (即使用newmalloc分配的变量)来发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM