确保"std::vector"不会移动其指针
Ensure a `std::vector` won't move its pointer
在C++中,std::vector<T>
基本上是指针(T*
)、大小对象(int
)和容量对象(int
)。
在构造时,std::vector
创建一个新的指针T*
,并且随着矢量的增长,std::vector
负责随着矢量的增加分配所需的内存。如果矢量增大,没有更多空间添加元素T
,则std::vector
将自动将指针移动到另一个位置并复制数据。
是否可以告诉矢量在构造时使用哪个指针,并指示固定大小,如果程序试图使矢量大于构造时指示的大小,则中止?
不,std::vector
没有提供直接的方法。
CCD_ 11通过分配器对象来分配空间。如果您愿意的话,编写一个最小分配器会很容易,它有一个额外的调用来禁用分配,如果在禁用分配后尝试进行分配,则会调用中止。
相关文章:
- 何时在引用或唯一指针上使用移动语义
- 如何从具有移动语义的类对象中生成共享指针
- MSVC将仅移动结构参数解释为指针
- c++在使用指针时移动语义
- 数组指针表示法C++(移动数组时)
- 如何检索指向在单独线程上运行的函数的移动指针?
- 如何在将原始指针移动到基类构造函数之前从unique_ptr中提取原始指针
- 移动指针是否经过结构成员 UB?并访问它?
- C++标准::移动指针
- SetFilePointer不会失败,但也不会移动指针
- 如果允许 JVM 在垃圾回收期间移动堆内存,那么垃圾回收如何不会导致 JNI 因移动指针而爆炸
- C++ 通过移动指针在数组中导航
- 移动指针的右值引用
- 移动指针类型的构造函数
- 如何在C++中移动指针
- 展开数组对象并移动指针
- "Cannot"移动指针
- 移动指针与动态内存c++
- 在链表中移动指针
- 在vector中的vector之间移动指针会导致vector迭代器不兼容