gpt4 book ai didi

c++ - 清除共享指针 vector 后内存泄漏

转载 作者:行者123 更新时间:2023-11-30 03:32:23 27 4
gpt4 key购买 nike

我有一个这样的共享指针 vector :

vector <shared_ptr<PhotoWidget>> photoWidgets;
PhotoWidget *photoWidget = new PhotoWidget;
photoWidget->setup(widget);
photoWidgets.emplace_back(move(photoWidget));

我需要清除内存,但找不到正确的方法,我阅读了类似的主题,但注意对我有用,到目前为止我使用这段代码没有任何成功。

for( auto&& widget : photoWidgets ) {
widget.reset();
}
vector<shared_ptr<PhotoWidget>>().swap(photoWidgets);
photoWidgets.clear();
photoWidgets.shrink_to_fit();

PhotoWidget 类是:

#include "ofMain.h"
#include "baseWidget.h"
#include "../lib/json.hpp"

using json = nlohmann::json;

class PhotoWidget: public BaseWidget {
public:
void setup(json config);
void update();
void draw();
void loadNewPhoto(json data);
void loadDefaultPhoto();

ofImage image;
bool defaultPhotoRunning = true;
uint64_t lastElapsedTimeMillis;
uint64_t interval;
};

最佳答案

我发现了问题,我修改了这部分:

PhotoWidget *photoWidget = new PhotoWidget;
photoWidget->setup(widget);
photoWidgets.emplace_back(move(photoWidget));

至此,问题解决:

photoWidgets.emplace_back(make_shared<PhotoWidget>());
photoWidgets[widget["ID"]]->setup(widget);

在这种情况下,在变量中创建新指针似乎无法正常工作。

关于c++ - 清除共享指针 vector 后内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43487946/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com