我应该确保在退出程序之前销毁SDL 2.0对象(渲染器,窗口,纹理等)吗?

时间:2013-09-19 04:28:25

标签: c++ sdl sdl-2

关于SDL 2.0的

This教程使用从main返回的代码,而不先破坏任何资源指针:

int main(int argc, char** argv){
    if (SDL_Init(SDL_INIT_EVERYTHING) == -1){
        std::cout << SDL_GetError() << std::endl;
        return 1; 
    }

    window = SDL_CreateWindow("Lesson 2", SDL_WINDOWPOS_CENTERED, 
        SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
    if (window == nullptr){
        std::cout << SDL_GetError() << std::endl;
        return 2; //this
    }
    renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED 
        | SDL_RENDERER_PRESENTVSYNC);
    if (renderer == nullptr){
        std::cout << SDL_GetError() << std::endl;
        return 3; //and this too
    }

在退出之前,我应该告诉我的终止函数是DestroyRenderer,DestroyWindow,DestroyTexture等吗?

2 个答案:

答案 0 :(得分:2)

同样的问题'我应该释放我在退出程序之前分配的内存'。是的,如果SDL / X11 / GL /等没有错误。敲定代码 - 无论如何都将被释放。但我认为你不应该自己想要这样做。

当然如果你崩溃而不是退出 - 很有可能会有一些事情无法完成,例如您不会将显示返回到本机桌面分辨率。

答案 1 :(得分:0)

我个人遇到过SDL_TEXTURE问题,导致程序运行时发生内存泄漏,并且在程序通常使用37 mb的ram泄漏大约2gb的RAM之后,图片的显示才停止。

import pandas as pd
data={'Color': ['Blue','Green','Yellow','Purple','Orange'],
      'Number':[20,21,19,18,40],
      'Code':['ss','dd','dd','xx','tt'],
      'Flag':[1,1,0,1,0]}
df=pd.DataFrame(data)
print(df)
my_list=list(df.iloc[2])
print(my_list)

每次我以前用渲染器显示另一张图片并且内存泄漏消失时,都这样称呼