关于C语言中的存储区划分以及相关内容
来源:互联网 发布:crm数据分析师招聘 编辑:程序博客网 时间:2024/05/17 02:04
首先,我写的东西是一些简单基础的内容,大神勿喷。
存储区划分
C语言中得存储区划分:代码区,常量区,静态区,栈区, 堆区。
如下图:
(1)代码区
代码区一般都是存储编译后的代码的二进制。其内容相对较容易。
(2)常量区
1.常量区,顾名思义就是存放常量的区域,常量区中主要是存放常量的 其关键字是const
例如:const int a = 5 ;
2.存放在常量区的常量 ,其值是只读 不可写的 也就是说其被赋值之后就不能再被改变
例如:// char arr[] = "zhoujielun";
arr[0] = 'Z';//此处是复制了常量区的字符串 所以可以改变
char *arr1 = "zhoujielun";
arr1[0] = 'Z'; //用指针指向常量区的字符串 通过指针修改字符串 常量区的常量是不可以改变的
(3)静态区
静态区也叫全局区
1.静态区存放的是被static修饰定义的静态常量还有在主函数main()外边定义的全局变量。例如:static int a1 = 5 ;
2.静态区的变量只能初始化一次,如果不给初始值 系统会赋值给零。
3.静态区中得内容程序运行结束之后才被释放。
(4)栈区
1.栈区中存储的是局部变量和函数参数。
2.栈区的特点:先进后出(从高到低分配,从低到高使用)。如下图:
3.栈区是系统自动分配和释放的,其内存是非常小的。
4.栈区的错误用法:
(5)堆区
1.堆区是由程序员手动的分配和释放的 ,它的内存空间比较大。
2.动态分配函数:
char *arr = malloc(8);//分配内存
arr = "iPhone";
3.动态释放函数:void free(void *);
free(arr); //释放内存 内存都是标记释放。
一般 malloc函数与free函数是一起使用的。
4.其他内存分配函数
并且把该内存上的所有字节清零。
内存操作函数
1.初始化内存
2.内存拷贝
3.内存比较
- 关于C语言中的存储区划分以及相关内容
- C/C++存储区划分
- C语言----内存区划分
- C语言----内存区划分
- 存储区划分
- Android 存储区划分
- 关于C/C++的内存区划分:堆、栈、自由存储区、全局/静态存储区和常量存储区
- 内存区划分(C++)
- C/C++内存区划分
- 内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区[C++]
- 《IOS_C语言》程序存储区划分、动态申请内存、内存操作函数
- C++的基础知识(十二)--C/C++内存区划分和存储类型
- C/C++内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区[内存管理]
- 内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区[C++][内存管理]
- 内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区[C++][内存管理]
- 内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区(c++)(一)
- 内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区(c++)(二)
- 内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区[C++][内存管理]
- 首次使用pod遇到问题后在stackoverflow寻找的解决方案
- UVA 534Frogger 【最小瓶颈树】
- Intellij IDEA 14的注册机及源代码
- Universal app(wp8.1) 自定义左侧导航栏
- python基础入门之简单爬虫编写
- 关于C语言中的存储区划分以及相关内容
- POJ 1149 PIGS(最大流-Dinic)
- 剑指Offer面试题29(java版):数组中出现次数超过一半的数字
- @Controller's and AOP Proxying
- Count the string
- 基于arm和ds18b20的系统
- HDU 3172 Virtual Friends
- Bootstrap 准备工作
- boostrape 栅栏总结