2
クラスにstd :: vectorがある場合、デストラクタを定義する必要がありますか?クラスのstd :: vectorのデストラクタ
ベースクラスと派生クラスの両方に空の仮想デストラクタを定義すると、メモリリークが発生しますか?
class fruit{
public:
uint32_t num_seed;
//virtual ~fruit(void){}
} ;
class spiky_apple: public fruit{
typedef std::vector<uint32_t> vector;
public:
vector spikes;
void bomb(void);
//spikes.reserve(2000)
//and then spikes[i] = xyz.
//virtual ~spiky_apple(void){}
} ;
この場合、コンパイラによって生成されたデストラクタで十分です。 – CoryKramer
おそらく、あなたの質問の 'ベクトル'のためではありません。 –
何とか私がiを反復するとき、spikes [i] = xyzは最初に第0番目のメンバー(例えばptr)へのポインタを取得するよりも遅く、ptr [i] = xyzを実行します。 intel Cコンパイラによる-O3最適化では、比率は3.5秒:3秒です。 – rxu