I want to write read savefile function with smart pointers and SDL2. I have little expirience with smart pointers and just want to ask is my code good, correct and no memory leaks.
this is my code:
std::shared_ptr<SDL_RWops> saveFile;
--
int GameEngine::ReadSave() {
int Highlevel;
//Open file for reading in binary
saveFile = std::shared_ptr<SDL_RWops>(SDL_RWFromFile( "data/save.txt", "r" ), SDL_RWclose);
//File does not exist
if( saveFile.get() == NULL ){
printf( "Warning: Unable to open file! SDL Error: %s\n", SDL_GetError() );
Highlevel = 0;
//Create file for writing
saveFile = std::shared_ptr<SDL_RWops>(SDL_RWFromFile( "data/save.txt", "w+" ), SDL_RWclose);
if( saveFile.get() != NULL ){
printf( "New save file created!\n" );
//Initialize data
SDL_RWwrite( saveFile.get(), &Highlevel, sizeof(int), 1 );
}
else {
printf( "Error: Unable to create savefile! SDL Error: %s\n", SDL_GetError() );
}
}
else{
//Load data
printf( "Reading save file...!\n" );
SDL_RWread( saveFile.get(), &Highlevel, sizeof(int), 1 );
}
return Highlevel;
}