C++ 向量不分配连续内存
c++ vector not allocating contiguous memory
C++中的 std :: 向量将对象存储在连续的内存位置。但是当我打印地址时,我发现这并没有发生。请让我知道为什么。代码在这里:
#include <iostream>
#include <vector>
using namespace std;
class a
{
int val1;
};
vector<a> records(10);
int main()
{
int i;
for(i=0;i<12;i++)
cerr<<"address"<<i<<"="<<&records[i]<<endl;
}
我得到的输出在内存中不是连续的。
首先,您显示的内存地址是连续的 - 在您的系统上,整数的大小似乎是 4 个字节。
此外,您的矢量大小为 10,您可以打印最多 12 个地址。不过,由于向量的内存分配策略,这不是问题。请记住,您应该更加小心。
地址将因类 A 的大小而相互偏移。
因为在您的系统中,每个int
的大小为 4 个字节。
相关文章:
- 当需要超过16GB的连续内存时,内存分配失败
- C++,您能否设计一种数据结构,将指针保存在连续内存中并且不会使它们失效?
- 使用连续内存实现多态性
- 我可以使用哪种数据结构来释放连续内存中的内存?
- std::array与C样式数组用于连续内存
- 如何创建非 POD 类型的连续内存池?
- C++ 中连续内存中的模板化不同大小的结构
- 连续内存分配
- std::vector 如何支持未知大小的自定义对象的连续内存
- 持续的时间访问是否在某个时候意味着连续内存
- std::vector 的连续内存分配
- C++连续内存操作
- 是否可以将指向已知大小的连续内存的指针转换为结构
- 确定将范围中的元素放置在连续内存中
- 未键入的连续内存容器
- 分配大块连续内存 - 做还是不做?
- 为什么数组中的指针不存储在连续内存中
- C++ 向量不分配连续内存
- std::bitset 是否保证连续内存以及结构中的恒定大小(以避免填充?
- 使用单个连续内存块为三维数组编制索引