首页| 论坛| 消息

标题:请问如何获取一个对象所占内存的大小?
作者:clickto
日期:2022-08-29 17:06
内容:

比如对QString之类的对象本身所占用的内存大小,sizeof只能取类型,不能获取对象实际所占用的内存。


#1 [ustone 08-30 07:21]
对象里头有指针域动态分配内存存储实际字符串大小可变,对象本身是固定大小的,比如指针域按4个字节计算,加上其它字段。
#2 [ustone 08-30 07:30]
如果你想知道字符串的长度QString类有个成员函数。
#3 [clickto 08-30 08:29]
谢谢回复。我的使用场景是使用memcpy来复制对象,遇到string之类的可变长度内存处理就麻爪了
#4 [20091001753 08-30 09:36]
当你把 QString 转换成 QByteArray 的时候,后者的 size 就是你想要的实际内存大小。
显然,后者大小与你所选的文字编码有关。
例如 QByteArray QString::toUtf8() 便是这段文字在 UTF8 编码下的内存占用。
#5 回 clickto 的帖子 [ustone 08-30 10:43]
clickto:谢谢回复。我的使用场景是使用memcpy来复制对象,遇到string之类的可变长度内存处理就麻爪了 (2022-08-30 08:29) 
对象隐含有函数指针,不适合memcpy来复制。纯粹的结构体可以。

<< 1 2 >> (1/2)

回复 发表
主题 版块