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

Bar*_*ran 4 c++ smart-pointers shared-ptr c++11

  1. (例如)1000个共享指针占用多少内存?
  2. 是16 x 1000字节吗?
  3. 32位和64位系统是否有所不同?

P.W*_*P.W 6

在典型的实现中,std::shared_ptr仅包含两个指针。

因此,1000个共享指针占用了1000 * 2 * sizeof(pointer)内存字节。

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

注意:控制块的大小(取决于实现)和共享指针共享所有权的对象的大小不属于此范围。