重庆市建设节能中心网站百度图片搜索图片识别
c/C++内存管理讲解
C/C++内存分布
首先通过一些题目的引入讲解带大家走进C/C++的内存分布。
eg1:
根据上述变量的定义,来判断它们所在的内存位置。
从接下来的4个选项中选出最佳答案填入(注:可重复选)。
A、栈
B、堆
C、数据段
D、代码段
(1)shelter 在哪里?____;
(2)endanger 在哪里?____;
(3)stake 在哪里?____;
(4)substitute 在哪里?____;
(5)transfer 在哪里?____;
(6)federal 在哪里?____;
(7)*federal 在哪里?____;
(8)export 在哪里?____;
(9)*export 在哪里?____;
(10)slip 在哪里?____;
(11)*slip 在哪里?____。
eg2:
算出上述部分变量的大小或者长度。
(1)sizeof(transfer) = ____;
(2)sizeof(federal) = ____;
(3)strlen(federal) = ____;
(4)sizeof(export) = ____;
(5)strlen(export) = ____;
(6)sizeof(slip) = ____;
附:
稍微给点提示,方便大家回忆
接下来xdm就认真思考下,我这里插播几张图作为缓冲区后再公布答案。
正确答案:
第一题:
(1)~(5):C C C A A
(6)~(11):A bbb
第二题:
(1)~(6):
不出意外的话,像我这样子的肯定是全错,想xdm这样子的水平肯定是全对了。
答案解析:
第一题:
(1)~(5)这部分可能存在疑惑的就是第三题这个变量明明是定义在局部为什么不是在栈区而是在数据段上面,出现这个问题的极大概率可能是忘记了static关键字的作用,使其被修饰的变量变成静态常量,所以在内存中的位置是在数据段。不过我觉得大部分的xdm选错肯定是因为手抖了。
(6)~(11)这部分