C++std::make_shared内存泄漏
C++ std::make_shared memory leak
以下代码行存在内存泄漏问题:
auto state = newSpriteState();
这些是相关功能:
class SpriteState {
protected:
Vector3 position;
int width, height;
double rotation, scaling;
int priority;
public:
SpriteState()
: position(0,0,0),
width(1), height(1),
rotation(0), scaling(1.0f),
priority(0)
{}
std::shared_ptr<SpriteState> newSpriteState()
{
return std::make_shared<SpriteState>();
}
};
class Vector3 {
private:
double x, y, z;
public:
Vector3( double x_, double y_, double z_ )
{
x = x_; y = y_; z = z_;
}
};
Intel Inspector继续报告我在函数CCD_ 1;更具体地说是CCD_ 2。
更新
从评论来看,这似乎有一些外部原因,所以这里有更多的代码:
bool Sprite::loadImage() {
auto state = newSpriteState();
initStateVector(0, state);
}
其中:
class Sprite
{
public:
Sprite();
std::map<const int, const std::shared_ptr<SpriteState>> stateVector;
void initStateVector(const int line, std::shared_ptr<SpriteState>& state)
{
stateVector.clear();
stateVector.insert(std::make_pair( line, std::move(state) ));
}
void loadImage();
}
为了清晰起见,我上传了Sprite
类的简化版本。
基本上,我在类Sprite
中分配一个shared_ptr<SpriteState>
并坚持使用std::map
。
升级到vs12后,问题已得到解决。我最好的估计是,这个问题与智能指针的tr1实现有关。
相关文章:
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 尽管遵循了规则,内存泄漏在哪里
- 为什么调用堆栈数组会导致内存泄漏
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- 使用模板类的自定义列表类型中的内存泄漏
- 为什么以下C++代码中存在内存泄漏?
- OpenCV 我应该使用智能指针来防止内存泄漏吗?
- 我是否生成线程并导致内存泄漏?
- 多线程程序中出现意外的内存泄漏
- 为什么此函数会导致内存泄漏?
- 在 C++ 库中使用cythonized python时内存泄漏
- 需要帮助查找内存泄漏
- 瓦尔格林德的内存泄漏使用新的
- 无法找出我的代码中的内存泄漏
- C++ 结构内部的unordered_map会导致内存泄漏问题吗?
- 可视化 使用 VS Code 查找C++应用程序中的内存泄漏
- Shared_ptr双链接列表内存泄漏
- C++ 在类中使用常量引用文本时 O2 内存泄漏