Я начинаю с C++, и эта функция заставляет память моей программы постоянно поднимать.Я использую SDL, и эта функция заставляет мою программу использовать всю мою память.
Он называется в цикле while, и он никогда не останавливается.
void text_box()
{
SDL_Surface *MESSAGE1 = TTF_RenderText_Solid(font, "Ligne #1" , noir);
SDL_Surface *MESSAGE2 = TTF_RenderText_Solid(font, "Ligne #2" , noir);
SDL_Surface *MESSAGE3 = TTF_RenderText_Solid(font, "Ligne #3" , noir);
SDL_Surface *MESSAGE4 = TTF_RenderText_Solid(font, "Ligne #4" , noir);
SDL_Surface *MESSAGE5 = TTF_RenderText_Solid(font, "Ligne #5" , noir);
SDL_Surface *MESSAGE6 = TTF_RenderText_Solid(font, "Ligne #6" , noir);
SDL_Surface *MESSAGE7 = TTF_RenderText_Solid(font, "Ligne #7" , noir);
SDL_Surface *MESSAGE8 = TTF_RenderText_Solid(font, "Ligne #8" , noir);
SDL_Surface *MESSAGE9 = TTF_RenderText_Solid(font, "Ligne #9" , noir);
SDL_Surface *MESSAGE10 = TTF_RenderText_Solid(font, "Ligne #10" , noir);
apply_surface(0, 403, MESSAGE1, SCREEN);
apply_surface(0, 412, MESSAGE2, SCREEN);
apply_surface(0, 421, MESSAGE3, SCREEN);
apply_surface(0, 429, MESSAGE4, SCREEN);
apply_surface(0, 438, MESSAGE5, SCREEN);
apply_surface(0, 447, MESSAGE6, SCREEN);
apply_surface(0, 456, MESSAGE7, SCREEN);
apply_surface(0, 465, MESSAGE8, SCREEN);
apply_surface(0, 474, MESSAGE9, SCREEN);
apply_surface(0, 483, MESSAGE10, SCREEN);
}
Он поднимается линейным образом, пока осталось больше памяти.
или даже лучше, сделайте это один раз и передайте его как параметр –
@BartlomiejLewandowski: И какой параметр это будет? Я не вижу параметр «SDL_Surface *» в API. –
Я имею в виду, передайте его функции 'text_box()'. Текст не изменяется, поэтому нет необходимости создавать новую поверхность в каждом цикле. –