【发布时间】:2015-11-23 22:20:13
【问题描述】:
我在我的 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,那么它会泄漏内存吗?
【问题讨论】:
-
堆栈分配总是在超出范围时被释放。只有堆分配必须被释放(这里不是这种情况)。
-
您不会泄漏内存,但除非
glm使用基于1 的索引,否则访问Model[4]是未定义的行为。
标签: c++ memory-leaks glm-math