Рассмотрим следующий код:
void loadSprite(Sprite &sprite)
{
Texture texture;
texture.loadFromFile("texture.bmp");
sprite.setTexture(texture);
}
Мне хорошо известно, что данный код некорректен, и целевой спрайт после вызова такой функции при отрисовке будет белым, потому что спрайт ссылается на текстуру, а текстура была локальным объектом функции.
Меня интересует другое.
Почему при отрисовке спрайта отрисовывается белый квадрат, а не падает все приложение из-за ошибки сегментации?
Я могу предположить две причины:
SFML, то есть при помощи менеджера памяти/ресурсов самой SFML. Но в этом случае я не совсем понимаю, как спрайты узнают о том, что текстура перестала существовать. То есть, не ясно, как спрайт связывается с текстурой: посредством указателя, ID или еще как-то.Очень хотел бы разобраться в том, как это работает внутри, чтобы лучше понимать, где могут возникнуть проблемы и как их решать.
Продвижение своими сайтами как стратегия роста и независимости