例如: 如何知道std :: string对象占用多少内存,包括std :: string使用的堆中分配的内存?
根据以下答案: 似乎没有一般的解决方案,我必须通过具体实施来实现。
答案 0 :(得分:2)
答案取决于所使用的数据结构,可能取决于编译器的实现方式。在std::string
的情况下,capacity
函数返回当前在其内部缓冲区中分配的元素数。在这种情况下,由于char
的大小为1,它实际上是字符串对象动态分配的字节数。
sizeof (std::string)
返回字符串类中包含的字节数,对于所有字符串对象都是常量,但不包括字符串对象管理的动态内存。
答案 1 :(得分:1)
可能:sizeof(mystring)+ mystring.size()* sizeof(char)