我正在制作的游戏中有一个shared_ptrfor 。SDL_Texture我想使用共享指针以便能够在多个对象上使用相同的纹理而不泄漏任何内存。我从一个方法返回共享指针
std::shared_ptr<SDL_Texture> RenderWindow::loadTexture(const char *filePath) {
return std::shared_ptr<SDL_Texture>(IMG_LoadTexture(renderer, filePath),
SDL_DestroyTexture);
}
Run Code Online (Sandbox Code Playgroud)
然而,当我在游戏中使用完纹理后,我希望能够手动调用它的析构函数,但是SDL_DestroyTexture当我需要它时它不会被调用,并且它会占用大量内存。有什么方法可以告诉它在我想要的时候调用它的析构函数吗?
reset()您可以通过调用shared_ptr来释放对象的所有权。如果这是最后一个持有该指针的对象,则将使用shared_ptr 的删除器成员来销毁该对象。
https://en.cppreference.com/w/cpp/memory/shared_ptr/reset
| 归档时间: |
|
| 查看次数: |
2002 次 |
| 最近记录: |