gpt4 book ai didi

c++ - 我应该删除 vector 吗?

转载 作者:IT老高 更新时间:2023-10-28 21:54:21 24 4
gpt4 key购买 nike

在过去的几天里,我痛苦地学习了很多关于 C++ 编程的知识。
我喜欢它:)
我知道我应该释放内存——黄金“每个 malloc=free”或“每个 new=delete”规则现在存在于我的世界中,但我将它们用于相当简单的对象。
vector 呢?只要可以,我都会使用 vector.clear() 但这显然还不够,因为我有大量的内存泄漏。
你能指导我如何处理这个东西吗?

*编辑
谢谢,您的评论让我想到了这个应用程序的算法,我将能够完全消除 vector 。 :O
抱歉 - 我开始在这里解释我的用例,然后我发现了我真正需要的东西。就像你连续 3 天每天 18 小时编写代码一样:|*编辑 2
这太疯狂了。通过对代码的微小更改,我将内存使用量从 2x130 mb(不断增长)消除为 2x 13.5mb,大小不变。谢谢你让我以另一种方式思考这个问题。

顺便说一句。这种 self 代码审查有一个名字——有人记得吗?当你问任何人(甚至是你的母亲或狗)并开始解释你的问题是什么时——突然间你自己解决了这个 5 小时的问题,只是试图从另一个角度看待它,或者只是试图总结它是什么所有关于。我经常发现自己被捕获了......

最佳答案

规则是当你清除一个对象 vector 时,每个元素的析构函数都会被调用。另一方面,如果你有一个指针 vector ,vector::clear() 不会对它们调用 delete,你必须自己删除它们。

因此,如果您只有一个字符串 vector ,而不是指向字符串的指针,那么您的内存泄漏肯定是由其他原因引起的。

关于c++ - 我应该删除 vector <string> 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/993590/

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