65,208
社区成员
发帖
与我相关
我的任务
分享
cout << "sizeof(double): " << sizeof(double) << endl; // 8
double *pD = new double(100.1);
cout << "sizeof(pd): " << sizeof(pD) << endl; // 4
cout << "sizeof(double*): " << sizeof(double*) << endl;//4
pD 指向的内存空间为 double,但pD本身所占用的只是一个指针的字节数,4字节。
对于Map 也是一样,Map 内部主要是通过树结构实现的,其包含三个指针
std::_Tree_node<std::pair<int const ,double>,void *> * _MyHead;
unsigned int _MySize;
std::_Container_proxy * _MyProxy;
具体每个指针对应的细节,楼主有兴趣可以研究一下STL 源码。
所以 sizeof(map<typea, typeb>) 等价于 sizeof(pointer) + sizeof(pointer) + sizeof(pointer)
不管你往map里插入多少数据,sizeof 都是计算的这三个指针占用的空间。