我正在使用Qt和C,我需要找出某些Qt类的实例使用的内存量,这通常使用sizeof来完成,但是在Qt中每个类都包含一个指向包含实际实现的另一个类的指针,在头文件中找不到此私有实现类的定义,但仅在源代码中找到.
解决方法
这个问题没有确切的答案,因为为同一类型的不同对象分配的内存量可能甚至不相同(例如,QSomething A可能能够重用缓存中的某些数据,而QSomething B可能必须单独分配它等).
我想你可以做的是写一个简单的测试程序,启动,分配有问题的对象的N,然后进入sleep()很长一段时间.当程序正在休眠时,使用任务管理器(或您喜欢的任何工具)来查看进程使用多少RAM.然后ctrl-C(或杀死)该过程,并使用较大的N值再次运行它,并重复测量.重复这个过程,最后你会知道进程的RAM分配如何随着分配的项目数量而增长,然后你可以做一个小代数来得到每个对象的平均内存成本.
(请记住,在启动过程时会有很多内存开销,因此从所有情况中减去N = 0情况所使用的内存,这样您只需测量对象的成本而不是环境开销)