1
6
内存泄漏?imo,vector与迭代器结合使用并不能特别保护您不受错误的影响,例如越界或通常使用无效的迭代器(除非您有带迭代器调试的VC++);相反,它很方便,因为它为您实现了一个动态可调整大小的数组并负责内存管理(nb!有助于提高代码的异常安全性)。
如果发生异常(例如创建字符串时),上面的内容可能会泄漏。没有向量。 由于向量的值语义,它也使得对代码进行推理变得更加容易。
但向量可能不能自动满足100%的动态数组用例。(例如,还有
|
2
8
新建/删除和新建[]/删除[]的配对不正确。 例如,使用:
而不是:
虽然C++标准不允许它,但有些编译器支持堆栈分配数组:
这可能是作用域规则的意外副作用(例如,常量被成员变量隐藏)。它一直工作,直到有人在运行时通过了“大小”太大,并吹出堆栈。接着就出现了一些蹩脚的错误。 |
3
4
我认为std::vector的实用程序在需要动态数组时会真正显示出来。 用std::vector做一个例子。然后一个使用数组重新分配的示例。我认为这说明了它自己。 |
4
3
一个明显的现象是:
对战
指出你知道第二种方法有效,但第一种方法是否有效取决于
|
5
3
你不会相信我多久见一次。一个典型的例子,任何形式的RAII都是有用的… |
6
3
我认为使用的基本简单性
使用动态数组,您需要自己跟踪大小,在插入新元素时增大大小,在不再需要时删除大小…这是额外的工作。
哦,还有一个警告:
|
7
2
你为什么不根据STL提供的算法来激励它呢? |
8
0
在原始数组中,运算符[](如果我可以调用它)易受索引越界问题的影响。对于向量,它不是(至少有一个运行时异常)。 对不起,我没有仔细阅读这个问题。索引超出限制是一个问题,但不是内存错误。 |
payloc91 · 存储地图中的条目是否安全?它会导致内存泄漏吗? 6 年前 |
pjj · 如果GC'ed是弱可达对象,那么为什么会出现OOM错误 6 年前 |
K.R. · RxJava行为主体和使用者-这里是否存在内存泄漏? 6 年前 |
eaglefreeman · 意外的R内存管理行为 6 年前 |
areify · 如何避免此代码中的内存泄漏? 6 年前 |