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

How to know all memory an object occupy when the object have some dynamic allocated memory?

本文关键字:内存 对象 何知道 动态分配      更新时间:2023-10-16

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

根据以下答案:似乎没有一个通用的解决方案,我必须通过具体的实现来做到这一点。

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

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

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