小智 10
在标准C++中无法做到这一点,很少有框架支持类似的东西.原因很简单 - 正如您所观察到的,对象可能包含指针,而这些指针可能指向包含指针的其他对象,依此类推.即使到达指针链的末尾,也没有通用的方法来确定指针指向的内存量.
所以,你需要找到另一种方法来解决你的问题,我认为这不是首先要解决的问题.
这个问题没有确切的答案,因为为同一类型的不同对象分配的内存量可能甚至不相同(例如,QSomething A可能能够重用缓存中的某些数据,而QSomething B可能必须单独分配它等).
我想你可以做的是写一个简单的测试程序,启动,分配有问题的对象的N,然后进入sleep()很长一段时间.当程序正在休眠时,使用任务管理器(或您喜欢的任何工具)来查看进程使用多少RAM.然后ctrl-C(或杀死)该过程,并使用较大的N值再次运行它,并重复测量.重复这个过程,最后你会知道进程的RAM分配如何随着分配的项目数量而增长,然后你可以做一个小代数来得到每个对象的平均内存成本.
(请记住,在启动过程时会有很多内存开销,因此从所有情况中减去N = 0情况所使用的内存,这样您只需测量对象的成本而不是环境开销)
事实上,这个问题并不是Qt独有的.考虑使用多少空间std::string.它既不是sizeof(std::string)也不是std::string::size().
C++没有这个问题的答案,因为这个问题很少有意义.
| 归档时间: |
|
| 查看次数: |
6062 次 |
| 最近记录: |