Niz*_*ias 2 c++ memory-leaks vector shared-ptr
在向向量添加共享指针时,我一直面临内存泄漏问题,向量定义如下:
vector<shared_ptr<Recipe>> favorites;
Run Code Online (Sandbox Code Playgroud)
(食谱是一个简单的类,有2个简单的字段)
以下函数用于向用户的收藏夹添加配方:
void User::postRecipe(string recipeName) {
if (!(*this).isConnected())
throw UserNotConnectedException();
if (!(*this).isInGroup())
throw NotInGroupException();
shared_ptr<User> owner = server->seekUser((*this).getId());
shared_ptr<Recipe> recipe(new Recipe(recipeName, owner));
server->postRecipe((*this).groupName, recipe);
if (!checkIfRecipeInFavs(favorites, recipeName)) {
favorites.push_back(recipe);
}
Run Code Online (Sandbox Code Playgroud)
虽然程序编译并且程序的输出符合要求,但此函数的最后一行似乎会导致内存泄漏,如果删除它,错误就会消失.
有任何想法吗?提前致谢.
Recipe.h:
class Recipe
{
string name;
shared_ptr<User> owner;
public:
Recipe(string name, shared_ptr<User> owner):name(name),owner(owner){};
~Recipe(){};
string getName();
shared_ptr<User> getOwner();
};
Run Code Online (Sandbox Code Playgroud)
Recipe.cpp:
string Recipe::getName(){
return name;
}
shared_ptr<User> Recipe::getOwner(){
return owner;
}
Run Code Online (Sandbox Code Playgroud)