c – 获取Qt对象的大小

前端之家收集整理的这篇文章主要介绍了c – 获取Qt对象的大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Qt和C,我需要找出某些Qt类的实例使用的内存量,这通常使用sizeof来完成,但是在Qt中每个类都包含一个指向包含实际实现的另一个类的指针,在头文件中找不到此私有实现类的定义,但仅在源代码中找到.

我是QT的新手,所以可能有一种标准的方法可以做到这一点,如果你没有任何想法来解决这个问题?

解决方法

这个问题没有确切的答案,因为为同一类型的不同对象分配的内存量可能甚至不相同(例如,QSomething A可能能够重用缓存中的某些数据,而QSomething B可能必须单独分配它等).

我想你可以做的是写一个简单的测试程序,启动,分配有问题的对象的N,然后进入sleep()很长一段时间.当程序正在休眠时,使用任务管理器(或您喜欢的任何工具)来查看进程使用多少RAM.然后ctrl-C(或杀死)该过程,并使用较大的N值再次运行它,并重复测量.重复这个过程,最后你会知道进程的RAM分配如何随着分配的项目数量而增长,然后你可以做一个小代数来得到每个对象的平均内存成本.

(请记住,在启动过程时会有很多内存开销,因此从所有情况中减去N = 0情况所使用的内存,这样您只需测量对象的成本而不是环境开销)

猜你在找的C&C++相关文章