当对象有一些动态分配的内存时,如何知道对象占用的所有内存
How to know all memory an object occupy when the object have some dynamic allocated memory?
例如:如何知道一个std::string对象占用了多少内存,包括std::字符串使用的堆中分配的内存?
根据以下答案:似乎没有一个通用的解决方案,我必须通过具体的实现来做到这一点。
答案取决于所使用的结构化数据,也可能取决于编译器如何实现它。在std::string
的情况下,capacity
函数返回其内部缓冲区中当前分配的元素数。在这种情况下,由于char
的大小为1,因此它实际上是字符串对象动态分配的字节数。
sizeof (std::string)
仅返回字符串类中包含的字节数,该字节数对于所有字符串对象都是常量,但不包括字符串对象管理的动态内存。
可能:sizeof(mystring)+mystring.size()*sizeof(char)
相关文章:
- 迭代时从向量和内存中删除对象
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 对具有动态分配的内存和析构函数的类对象的引用
- 当指向对象的指针作为参数传递给 std::thread 时,内存可见性
- 内存清理程序报告全局对象构造中未初始化值的使用
- 如何删除列出的"QGraphicsPathItem"对象以控制进程内存使用情况?
- 有没有办法列出所有共享内存对象的名称?
- 我的共享内存对象保存在哪里
- boost共享内存对象中的指针
- 创建 boost::interprocess 共享内存对象的非共享副本
- 提升中的异常:进程间,共享内存对象删除
- 自动C++内存/对象实例管理?智能指针
- 将矢量或任何其他容器存储在boost进程间共享内存对象中
- OpenCL:减少示例,并保留内存对象/将cuda代码转换为OpenCL
- boost::创建托管共享内存对象时出现进程间ubuntu异常
- 用户可能无法在 Linux 系统上打开共享内存对象的原因
- 如何测试boost共享内存对象是否被删除?
- 将指向结构体或内存对象的空指针强制转换为新结构体
- Apache模块共享内存对象