如果我在参数列表中实例化对象而不使用 new 关键字,我会得到内存泄漏吗?例如,我有一个 tile 类:
// tile.h (too small for implementation)
class Tile {
public:
enum Type {
TYPE_NONE = 0,
TYPE_NORMAL,
TYPE_BLOCK
};
inline Tile(const int id, const Type type) : id_(id), type_(type) {};
inline int id() const { return id_; };
inline Type type() const { return type_; };
private:
int id_;
Type type_;
};
稍后我将加载文本文件中指定的一些图块:
// ...
int tile_id;
Tile::Type tile_type;
fscanf(file_handle, "%d:%d ", &tile_id, &tile_type);
tile_list_.push_back(Tile(tile_id, tile_type)); // this is the line of interest
// ...
这似乎有效。Tile(tile_id, tile_type)
是我不确定的部分,我不知道它最终是堆栈还是堆。tile_list_
是一个std::vector<Tile>
,到目前为止我假设它会处理Tile
我传递给它的对象的内存。它是否正确?
现在我正在考虑在其他地方创建一个可以将类似实例化的对象作为参数的方法。这在参数列表中看起来如何,在方法和调用代码中必须做什么以确保没有内存泄漏?
PS 也欢迎任何关于代码风格的评论,我觉得 Tile 作为一个结构可能会更好,所以特别欢迎对此发表评论。