你好我购买了你这个专栏的权限,
C++_一个可以动态管理std::vector的类SharedVector,提供了一个包装器将 std::vector 与智能指针 std::shared_ptr 结合在一起
我现在就是用智能指针std::shared_ptr和std::vector组合的时候,发现了内存泄漏,我现在看你这个帖子,你能给我提供一个调用你这个方法的例程吗?我看了不知道怎么调用你这个方法
技术咨询能否提供一个调用的例子
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。
问题解决方案:使用STD::SHARED_VECTOR和STD::MAKE_SHARED来实现动态管理STD::VECTOR。
代码示例:
#INCLUDE <IOSTREAM> #INCLUDE <MEMORY> // 定义一个静态成员函数来获取共享引用 CLASS SHAREDVECTOR { PUBLIC: STATIC CONST AUTO& GET_SHARED() { RETURN STD::MAKE_SHARED<SHAREDVECTOR>(); } }; // 使用STD::SHARED_VECTOR和STD::MAKE_SHARED来动态管理STD::VECTOR CLASS MYCLASS { PRIVATE: STD::SHARED_VECTOR<STD::STRING> VEC; PUBLIC: VOID ADD(STD::STRING S) { IF (VEC.EMPTY()) { VEC = STD::MAKE_SHARED<SHAREDVECTOR>(GET_SHARED()); VEC.PUSH_BACK(S); } ELSE { VEC.PUSH_BACK(S); } } }; INT MAIN() { MYCLASS OBJ; OBJ.ADD("HELLO"); OBJ.ADD("WORLD"); RETURN 0; }在这个例子中,我们首先定义了一个静态成员函数
GET_SHARED(),它返回一个共享引用。然后,我们在MYCLASS中创建了一个静态成员变量VEC,并使用STD::MAKE_SHARED<SHAREDVECTOR>来创建一个共享引用,并将其赋值给OBJ.最后,在ADD()方法中,我们通过STD::MAKE_SHARED<SHAREDVECTOR>创建一个新的共享引用,将"HELLO"添加到VEC中,再通过STD::MAKE_SHARED<SHAREDVECTOR>创建一个新的共享引用并将"WORLD"添加到VEC中。这样就可以动态地管理STD::VECTOR。解决 无用评论 打赏 举报