私はゲームを書いていて、前の小屋で、メモリが残っていないために5分間使用するとクラッシュするビデオデコーダーに取り組んでいたことを覚えています。
上司は一日中それを修正しようとして、翌日少し腹を立てて私に会いに戻ってきました。コンストラクターの初期化子リストにすべてのクラスメンバー属性を入れなかったと言ったからです。
それはintまたは多分他のデータ/プリミティブでした。今では、クラス内のものは、アドレスに残っているものの影響を受けるのではなく、デフォルト値で初期化されていると思いました。私は今まで同じことをしているので、この質問をすることを本当に考えたことはなかったので、これを明確にしたいと思いました。
私がやるとしましょう:
#pragma once
#include "GameState.h"
#include "GameGrid.h"
class Shape;
class PlayState : public GameState
{
....
private:
sf::Clock _keyPressClock;
Shape *_droppingShape;
int generateShapeID();
int generateHorizSpawnPos();
};
私のコンストラクターがすべて初期化する場合は、ポインターです:
PlayState::PlayState() : _droppingShape(NULL) {}
それは悪い習慣ですか、それとも実際にメモリリークを引き起こす可能性がありますか?