我一直在写一个游戏,我记得在以前的合作中,我正在开发一个视频解码器,它会在使用 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) {}
这是不好的做法还是确实会导致内存泄漏?