用一个词(TASPK)牢记C程序内存布局
一个典型的C程序内存布局,从低地址到高地址分别为:
1. text (正文段,即代码段 Code Segment)
2. data (已经初始化的数据段)
3. bss (未被初始化的数据段 Block Started by Symbol)
4. heap (堆)
5. stack (栈)
注1:上图中的Code segement 即text。
于是,采用缩写词记忆法如下所示:
- 对第1个单词text取其第1个字符t,
- 对第2个单词data取其第2个字符a,
- 对第3个单词bss取其第3个字符s,
- 对第4个单词heap取其第4个字符p,
- 对第5个单词stack取其第5个字符k,
那么缩写词就是taspk, 大写为TASPK. (或者对所有单词都取最后一个字符,也是taspk)。用Python代码描述如下:
- >>> layout = ['text', 'data', 'bss', 'heap', 'stack']
- >>> abbr = ''
- >>> i = 0
- >>> for s in layout:
- ... abbr += s[i]
- ... i += 1
- ...
- >>> print abbr.upper()
- TASPK
- >>> abbr = ''
- >>> for s in layout:
- ... abbr += s[-1]
- ...
- >>> print abbr.upper()
- TASPK
tas: 正好是我在Sun/Oracle公司的STC代码库所在的服务器名,跟tas打交道10多年了,自然记得住了;
pk: 这个词太熟悉不过了,PK者,单挑也(重庆话:对挖(3声))。
于是"TASPK"可记忆为跟tas PK, 他(ta)死(s)!
另外,如果想彻底搞明白text, data, bss等请阅读ELF文件格式相关文献。 推荐阅读CSAPP一书的第7章Linking。
用一个词(TASPK)牢记C程序内存布局的更多相关文章
- C语言程序内存布局
C语言程序内存布局 如有转载,请注明出处:http://blog.csdn.net/embedded_sky/article/details/44457453 作者:super_bert@csdn 一 ...
- 一起talk C栗子吧(第一百三十一回:C语言实例--C程序内存布局三)
各位看官们,大家好.上一回中咱们说的是C程序内存布局的样例,这一回咱们继续说该样例.闲话休提,言归正转.让我们一起talk C栗子吧. 看官们,关于C程序内存布局的样例,我们在前面的两个章回都介绍过了 ...
- C++程序内存布局
代码区(code area) 程序内存空间 全局数据区(data area) 堆区(heap area) 栈区(stack area) 一个由C/C++编译的程序占用的内存分为以下几个部分, 1) ...
- C程序内存布局
作为计算机专业的来说,程序入门基本都是从C语言开始的,了解C程序中的内存布局,对我们了解整个程序运行,分析程序出错原因,会起到事半功倍的作用 . C程序的内存布局包含五个段,分别是STACK(栈段), ...
- linux C 程序内存布局
参考: 1. http://www.cnblogs.com/clover-toeic/p/3754433.html 2. http://www.cnblogs.com/jacksu-tencent/p ...
- Linux C程序内存空间
linux下内存空间布置: 一个典型的Linux C程序内存空间由如下几部分组成: 代码段(.text).这里存放的是CPU要执行的指令.代码段是可共享的,相同的代码在内存中只会有一个拷贝,同时这个段 ...
- Unix下C程序内存泄露检测工具:valgrind的安装使用
Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具. Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Goo ...
- ESP32应用程序的内存布局
应用程序内存布局 ESP32芯片具有灵活的内存映射功能.本节介绍ESP-IDF在默认情况下如何使用这些功能. ESP-IDF中的应用程序代码可以放置在以下内存区域之一中. IRAM(指令RAM) ES ...
- c++内存布局与c程序的内存布局
c/c++的内存布局:堆,栈,自由存储区(与堆的区别),全局/静态存储区,常量存储区(字符串常量,const常量) http://www.cnblogs.com/QG-whz/p/5060894.ht ...
随机推荐
- 使用 FireMonkey 构建优秀专业 Android 应用的10点提示
原文链接:http://www.firemonkeyx.com/ten-tips-for-building-stunning-professional-android-apps-with-firemo ...
- MVC4 4种Filter
1. AuthorizationFilter: 从命名上看这个用于完成授权相关的工作. AuthorizationFilter 实现了 IAuthorizationFilter 接口, 如果我们希望执 ...
- Android-下载网上图片
下载操作相关代码: package liudeli.async; import android.app.Activity; import android.app.ProgressDialog; imp ...
- LightOJ 1234 Harmonic Number(打表 + 技巧)
http://lightoj.com/volume_showproblem.php?problem=1234 Harmonic Number Time Limit:3000MS Memory ...
- 「HNOI 2014」 江南乐
\(Description\) \(n\)堆石子,每堆石子有\(s_i\)个,两个人轮流操作,每次可以将一对不少于\(F\)的石子尽量平均分成\(m\)堆,\(m\)每次自选,不能操作者输.共有\(T ...
- 清北学堂2019NOIP提高储备营DAY3
今天是钟神讲课,讲台上照旧摆满了冰红茶 目录时间到: $1. 动态规划 $2. 数位dp $3. 树形dp $4. 区间dp $5. 状压dp $6. 其它dp $1. 动态规划: ·以斐波那契数列为 ...
- NetEaseGame/ATX 的MD
# ATX(AutomatorX) (中文版)[](ht ...
- gulp 图片、样式、js、实时刷新等压缩gulpfile.js文件各个模块
1.压缩tinypng图片 gulp-tinypng-nokey,但不压缩gif格式(另外一个gulp-imagemin压缩率不高,可以压缩gif格式) // 获取 gulp var gulp = ...
- “全栈2019”Java第四十五章:super关键字
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Your branch is ahead of 'origin/master' by 1 commit.
git reset HEAD^ --soft git reset HEAD^ --hard --soft 表示保留当前commit,重新commit --hard 表示丢弃当前add,重新add.co ...