1000个共享指针占用多少内存?

How much memory do 1000 shared pointers take?

  1. (例如)1000 个共享指针需要多少内存?
  2. 是 16 x 1000 字节吗?
  3. 32位和64位系统有区别吗?

在典型的实现中,std::shared_ptr holds only two pointers

所以1000个共享指针占用了1000 * 2 * sizeof(pointer)字节的内存。

  • 在遵循 ILP32 数据模型的所有 32 位系统上,指针的大小都是 4 个字节。
  • 在遵循 LP64 数据模型(大多数 Unix 和 Unix-like 系统)或 LLP64 数据模型(Microsoft Windows x86-64)的 64 位系统上,指针的大小为 8 个字节。

注意:控制块的大小(取决于实现)和共享指针共享所有权的对象的大小不是其中的一部分。