我正在尝试了解std::list
数据结构如何分配内存。我创建了一个小测试程序。
#include <cstdio>
#include <vector>
#include <iostream>
#include <string>
#include <list>
class MyClass
{
public:
MyClass();
~MyClass(){}
private:
std::list<unsigned char> numlist;
};
MyClass::MyClass()
{
numlist.push_back(1);
}
int main()
{
MyClass c; // instantiate
}
我在valgrind中运行了上面的片段
$valgrind --leak-check=full ./indepth
==32330== HEAP SUMMARY:
==32330== in use at exit: 0 bytes in 0 blocks
==32330== total heap usage: 1 allocs, 1 frees, 24 bytes allocated
请帮我理解为什么在这里分配了24个字节。
#include <iostream>
。同时请注意,MyClass c;
存储在栈中,首先不进行动态分配。我认为该语句至少会被优化掉。 - πάντα ῥεῖiostream
与分配24字节无关。 - hAcKnRoCkint
值。 - Pete Becker<iostream>
就需要创建std::cout
、std::cin
和std::cerr
的实例。 - πάντα ῥεῖ