使用空向量与指向向量的指针有什么内存开销?
选项A:
std::vector<int> v;
选项B:
std::vector<int> *v = NULL;
我相信选项B占用1 32位指针(假设这里是32位) 空'v'占用了多少内存?
答案 0 :(得分:32)
至于问题:这取决于实施。使用MSVC 7.1:
std:: cout << sizeof(std::vector<int>) << std::endl;
给我16(字节)。 (3个指针:容量的开始,结束和结束,加上分配器)
然而应该注意到指向矢量的指针会给它带来更大的开销:
答案 1 :(得分:12)
它完全依赖于实现,你既不应该假设也不应该依赖于细节。对于使用VC的20字节是值得的。
答案 2 :(得分:5)
std::vector v;
占用sizeof(v)
个空格。它可能因实现而异,所以运行它并找出需要多少。
答案 3 :(得分:3)
VS2005:
std::vector<int> *ptrToVec = new std::vector<int>();
std::vector<int> vecOfInt;
sizeof(ptrToVec) = 4
sizeof(vecOfInt) = 20
谢谢!
答案 4 :(得分:3)
答案 5 :(得分:0)
依赖于实现,可能是当前大小和容量的指针和两个整数。