当对象有一些动态分配的内存时,如何知道对象占用的所有内存?

时间:2013-08-26 02:56:31

标签: c++

例如:     如何知道std :: string对象占用多少内存,包括std :: string使用的堆中分配的内存?

根据以下答案: 似乎没有一般的解决方案,我必须通过具体实施来实现。

2 个答案:

答案 0 :(得分:2)

答案取决于所使用的数据结构,可能取决于编译器的实现方式。在std::string的情况下,capacity函数返回当前在其内部缓冲区中分配的元素数。在这种情况下,由于char的大小为1,它实际上是字符串对象动态分配的字节数。

sizeof (std::string)返回字符串类中包含的字节数,对于所有字符串对象都是常量,但不包括字符串对象管理的动态内存。

答案 1 :(得分:1)

可能:sizeof(mystring)+ mystring.size()* sizeof(char)