首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C/C++项目中获得所有数据类型大小和函数栈内存大小?

如何在C/C++项目中获得所有数据类型大小和函数栈内存大小?
EN

Stack Overflow用户
提问于 2008-09-18 11:52:31
回答 4查看 489关注 0票数 1

我有一个继承的大型C/C++项目。有没有好的工具或技术来生成关于所有数据类型的"sizeof“的报告,以及这样一个项目中每个函数的堆栈占用空间的分解。

EN

回答 4

Stack Overflow用户

发布于 2008-09-30 18:05:28

我很想知道你为什么要这么做,但那只是好奇而已。

确定使用的每个类的大小应该很简单,除非它们已经模板化,在这种情况下,您还必须检查每个实例化。

同样,确定函数的每次调用的大小也很简单:它是每个传递的参数的大小加上一些函数开销。

要确定整个程序的全部内存使用情况,如果不是完全静态定义的,没有运行时分析器是无法完成的。

编写一个将所有类名收集到一个文件中的shell脚本将非常简单。该文件可以被构造为一个.cpp文件,该文件是对每个类的sizeof的一系列调用。如果该文件还包含每个头文件,则可以编译并运行该文件,以获得仅类的内存占用输出。

同样,剔除所有函数定义以查看它们何时没有使用引用或指针参数(例如,将整个类实例复制到堆栈上)应该是非常简单的。

所有这些都表明,我不知道现有的工具,但编写一个应该不难。

票数 1
EN

Stack Overflow用户

发布于 2008-09-18 13:01:58

我不知道有什么工具,但是如果你在MSVC下工作,你可以使用DIA SDK从.PDB文件中提取大小信息。遗憾的是,这不适用于堆栈足迹IIRC。

票数 0
EN

Stack Overflow用户

发布于 2008-09-18 14:28:47

我不确定堆栈足迹的概念是否真的存在于现代编译器中。也就是说,我认为确定使用的堆栈空间量取决于所采用的分支,而分支又取决于输入参数,并且通常需要解决暂停问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/91849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档