C/C++ 内存分布---变量所在哪个内存区域以及变量所占空间大小是多少?

news/2024/11/28 23:48:59/

C/C++内存区域划分:

 

 

变量所在哪个内存区域以及变量所占空间大小是多少?

int globalVar = 1;
static int staticGlobalVar = 1;
void Test()
{static int staticVar = 1;int localVar = 1;int num1[10] = { 1, 2, 3, 4 };char char2[] = "abcd";const char* pChar3 = "abcd";int* ptr1 = (int*)malloc(sizeof(int) * 4);int* ptr2 = (int*)calloc(4, sizeof(int));int* ptr3 = (int*)realloc(ptr2, sizeof(int) * 4);free(ptr1);free(ptr3);
}

问题一:

1. 选择题:
选项: A.栈 B.堆 C.数据段(静态区) D.代码段(常量区)

题目:

1.globalVar在哪里?____   2.staticGlobalVar在哪里?____
3.staticVar在哪里?____4.localVar在哪里?____

5.num1 在哪里?____            6.char2在哪里?____
 7.*char2在哪里?___     8.pChar3在哪里?____   

 9.*pChar3在哪里?____    10.ptr1在哪里?____ 
11.*ptr1在哪里?____

问题二:

2. 填空题:
1.sizeof(num1) = ____; 2.sizeof(char2) = ____;  3.strlen(char2) = ____;
4.sizeof(pChar3) = ____; 5.strlen(pChar3) = ____;
6.sizeof(ptr1) = ____;
 

答案:

问题一:

C C C A  A  A  A  A  D A B

问题二:

40  5  4  4  4  4 

解析: 

问题一:

1.globvar是全局变量所以在数据段 C

2.staticGlobalVar 是静态全局部变量在静态区 C

3.staticvar是静态局部变量在栈区 C

4.localVar是局部变量在栈区 A

5.num1是局部变量在栈区 A

6.char2 是局部变量在栈区 A

7.*char2 是一个数组,把后面常量串拷贝过来到数组中,数组在栈上,所以*char2在栈上A

8.pChar3是局部变量在栈区 A

9.*pChar3得到的是字符串常量字符在代码段 D

10.ptr1是局部变量在栈区A

11.*ptr1是malloc申请的空间数据,在堆上 B

问题二:

1.一个整型占4个字节,num1的大小为10,所以有4*10个字节

2.char2 字符数组,要包含‘\0’,所以是5

3.strlen不包含‘\0’,所以是4

4.pchar3是指针,所以为4

5.strlen不计‘\0’,所以是4

6.ptr1是指针,所以是4

备注:

1.栈:又叫堆栈--非静态局部变量/函数参数/返回值等等,栈是向下增长的。
2. 内存映射段:是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。(Linux课程如果没学到这块,现在只需要了解一下)
3. 堆:用于程序运行时动态内存分配,堆是可以上增长的。
4. 数据段:存储全局数据和静态数据。
5. 代码段:可执行的代码/只读常量
 


http://www.ppmy.cn/news/4025.html

相关文章

MES系统——安东管理篇

警车:哇~儿!哇~儿!哇~儿! 消防车:火~哦!火~哦!火~哦! 救护车:喂~唔!喂~唔!喂~唔! 喂喂,你还记得救护车、消防车、警车等…

OPSS-PEG-N3叠氮聚乙二醇巯基吡啶, N3-PEG-OPSS,点击化学PEG试剂

名称 叠氮聚乙二醇巯基吡啶 N3-PEG-OPSS 中文名称 叠氮PEG巯基吡啶 巯基吡啶PEG叠氮 巯基吡啶聚乙二醇叠氮 英文名称 N3-PEG-OPSS OPSS-PEG-N3 Azide-PEG-OPSS OPSS-PEG-Azide 溶剂 溶于二氯甲烷,氯仿,乙酸乙酯,四氢呋喃等有机溶剂 存储条…

1999-2020年各省农村综合数据

1999-2020年各省农村综合数据 1、时间:1999-2020年 2:来源:各省NJ、统计NJ、农村NJ 3、范围:包括31省 4、指标包括: 第一产业增加值占地区生产总值比重(%)、第一产业人员占就业人员比重&a…

创建第一个QT程序demo

双击Qt Creator 9.0.0 (Community)图标,打开软件。该图标所处位置为(如果是默认安装到C盘下面的话):C:\Qt\Tools\QtCreator\bin\qtcreator.exe 或者从开始菜单栏启动(开始菜单栏的启动图标本质上也是一个快捷方式&…

如何建立好客户信任关系?

2022年9月8日, 一个秋高气爽阳光明媚的日子。 正当我优雅的端起coffee, 专注投入早A晚C的重要一环时, 光头老邱按下一沓资料, 一并丢下经典语录: 这个客户对我们很重要! emmm...... 重要的客户托付给…

Web前端105天-day45-DOM

DOM01 目录 前言 一、DOM 二、DOM树 三、class 总结 前言 DOM01学习开始 一、DOM DOM: Document Object Model 文档 : HTML代码 -- 超文本标记语言对象 : 网页真正显示的是 HTML 转换出来的 对象类型 -- document模型 : 固定的规则 -- 代表把 HTML代码 转 JS对象网页真…

过两年 JVM 可能就要被它替代了

今天说一说 GraalVM。 GraalVM 是 Oracle 大力发展和想要推广的新一代 JVM ,目前很多框架都已经渐渐支持 GraalVM 了,比如我们在用的 Spring 也已经推出了对 GraalVM 兼容的工具包了。 既然说的这么厉害,那么它到底是何方神圣呢。 GraalVM…

为什么量子力学需要大修? - 易智编译EaseEditing

圣安东尼奥——量子力学是科学的政治两极分化。 选民要么站在一边无休止地争论,要么呆在家里接受政治现状。物理学家要么接受量子力学并进行计算,要么在关于量子力学究竟是如何描述现实的无休止辩论中站队。 史蒂文温伯格(Steven Weinberg)过去对量子力…