gpt4 book ai didi

c++ - 学习 C++ 和 SDL- 以下是否会产生内存泄漏?

转载 作者:行者123 更新时间:2023-11-30 02:10:24 25 4
gpt4 key购买 nike

我正在自学一点 C++,我不确定自己是否掌握了内存管理。我只懂 Java 和一点 PHP 和 Python,所以这对我来说有点新鲜。我也在使用 SDL——这似乎是一种加速学习过程的有趣方式。无论如何,我正在尝试编写一个清理函数来释放所有已传递给堆栈的表面(我只是使用堆栈 STL)。所以,我有以下代码(缩写):

#include <stack>

//stack of SDL_Surfaces
stack<SDL_Surface*> surfaces;

void clean() {
SDL_Surface *temp = NULL;

//loops through the stack depending on its size
while (surfaces.size() != 0) {
temp = surfaces.top();
SDL_FreeSurface(temp);
surfaces.pop();

} //while
if (surfaces.size() == 0) {
cout << "cleanup worked correctly" << endl;
} //if
}

//loading an image (this is in the main function)
background = load_image( "background.bmp" );
surfaces.push(background);

//cleaning time
clean();

我不确定清理方法。我认为这是实现 SDL_FreeSurface 函数而不是手动指定每个表面的更好方法。因此,如果我在屏幕上画了十张图片(比如十艘星舰)然后将它们炸毁,我就需要正确删除它们。我会为这 10 艘星际飞船创建一个堆栈,然后在它们被摧毁时我可以将它们全部消灭,如果这有意义的话。我担心我过于复杂的事情并引入了一种全新的方法来导致内存泄漏。

任何反馈/评论将不胜感激!我是 C++ 的新手,所以请随意 mock 我在内存管理方面的徒劳尝试。

最佳答案

您自己的代码没有任何内存泄漏。假设 load_image() 也是安全的,那么整个代码都没有内存泄漏。

请记住,如果您不使用 new 运算符,则不会发生内存泄漏。

关于c++ - 学习 C++ 和 SDL- 以下是否会产生内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4599837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com