我在我的 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
使用的堆栈被清除时,这些实例的内存将被重新声明。
关于c++ - 使用 GLM 时内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33881814/