c - 如何知道我的二进制可执行文件的内存占用

标签 c memory memory-management openwrt

我想知道是否有办法知道用 C 语言编码的二进制可执行文件的内存占用情况。

informations about binary executable : compiled with toolchain of OpenWrt branch (Attitude Adjustment) and its architecture is x86

最佳答案

在 Linux/Unix 系统上,您可以使用 size为此的命令,例如在我的 Ubuntu 系统上

size /bin/sh
   text    data     bss     dec     hex filename
 102134    1776   11272  115182   1c1ee /bin/sh

因为这是 OpenWrt,如果你有不同的架构,例如MIPS 或 ARM 或其他东西,当然,您必须选择适当工具链的 size 命令。

各节含义如下

  • text 表示可执行文件的代码大小
  • data 是初始化数据段,例如变量,例如 int v = 17;char name[] = "Tom";
  • bss 是未初始化或简单的 0 初始化部分,int a;double amount;<
  • dec 是整体大小,在本例中为 102134 + 1776 + 11272 = 115182
  • hex 最后也是整体大小,作为十六进制值 1c1ee = 115182

但这不包括堆栈或任何动态堆内存。要查看运行时的整体内存使用情况,您必须查看 pstop输出。

关于c - 如何知道我的二进制可执行文件的内存占用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22478014/

相关文章:

c++ - 从原始内存和类分析器中推断原始类型

php - Postgres - 批量运行查询?

linux - 内存泄漏会导致我的进程被杀死吗?

c - 相同信息的不同 typedef

C : Debugging & Run - Different Output

C 将文字 char '0' 转换为 int 0(零),如何?

java - 如何创建类的单个实例并多次使用它?

objective-c - C 中的三元运算符(包括 Objective-C 和 C++)- 在 Else 条件下什么都不做

c++ - 我是否需要显式释放托管 C++ 中的内存?

c++ - uint8、uint16等的使用