タイル ポインターの 2D ベクトルがあります。別のマップをロードするたびに、ベクター内のすべてのタイルを削除してメモリを解放し、別のタイルで再充填したいと考えています。
std::vector<std::vector<Tile*>> map;
ここに私のタイルクラスがあります:
#ifndef _TILE_H
#define _TILE_H
#include <SFML\Graphics.hpp>
class Tile
{
public:
int type;
int color;
int light_level;
int loc_x, loc_y;
Tile();
~Tile();
sf::Sprite baseSprite;
void Draw(int x, int y, sf::RenderWindow* rw);
void setTexture(sf::Texture& texture);
};
#endif
次のようにベクトルを埋めます。
map[x][y] = tile;
問題は、ベクトルをタイルで補充するたびに、ゲームがクラッシュするまでメモリがいっぱいになり続けることです。私の質問は、メモリが解放されるように、ベクトルからすべてを適切に削除するにはどうすればよいですか?
メモリを解放しなかったタイルを削除する試みは次のとおりです。
for(int ii = 0; ii < this->map.size(); ii++){
for(int jj = 0; jj < this->h; jj++){
delete &this->map[ii][jj]->baseSprite;
delete &this->map[ii][jj]->color;
delete &this->map[ii][jj]->light_level;
delete &this->map[ii][jj]->loc_x;
delete &this->map[ii][jj]->loc_y;
delete &this->map[ii][jj]->type;
delete &this->map[ii][jj];
}
}
map.clear()
追加のコードが必要な場合は、お知らせください。