1
我有一個子彈類。我嘗試通過以下代碼實例化它:內存使用問題使用果醬SDK
我總是得到一個斷言,說有一個正在使用的內存。爲什麼?
在另一類稱爲船:
if (g_Input.isKeyDown(s3eKeySpace))// && Canfire)
{
Bullet *bullet = new Bullet();
bullet->Init(SHIP_BULLET);
bullet->setPosition(Position.x, Position.y - 20);
Bullets->push_back(bullet);
Canfire = false;
}
這就是所謂的每個這導致存儲器仍然在使用幀:
for (list<Bullet*>::iterator it = Bullets->begin(); it != Bullets->end();)
{
(*it)->Update(dt);
if ((*it)->IsDestroyed)
{
Canfire = true;
it = Bullets->erase(it);
}
else
{
it++;
Canfire = false;
}
}
Ship類
Ship::~Ship()
{
for (std::list<Bullet*>::iterator it = Bullets->begin(); it != Bullets->end(); ++it)
delete *it;
delete Bullets;
}
class Bullet
{
public:
Bullet();
~Bullet();
public:
void Init(BulletTypes bulletType);
void Update(float dt);
void Render();
CIw2DImage* Image; // curr image
}
void Bullet::Init(BulletTypes bulletType)
{
BulletType = bulletType;
if (BulletType == SHIP_BULLET)
{
Image = Iw2DCreateImage("textures/ship_bullet.png");
if (Image == nullptr)
return;
}
}
Bullet::~Bullet()
{
delete Image;
}
你應該真的只爲子彈加載圖像*一次*,而不是每個子彈一次。 – nvoigt 2014-12-27 16:39:07
@nvoigt但我會如何改變我的設計呢? – andre 2014-12-27 16:55:32
**編輯**您的文章幷包含您收到的_exact_錯誤消息以及使用哪種工具發佈錯誤(編譯器,valgrind,Visual Leak Detector等)。 – 2014-12-27 18:39:55