C变量区域
创始人
2024-06-01 16:11:23

C语言中有五大内存分区,分别是栈区、堆区、全局区/静态区、常量区和代码区。

1.栈区:由编译器自动分配释放,存放函数的参数值、局部变量的值等。当调用函数的时候函数中定义的变量会被加到栈中,当函数离开的时候,被添加的变量会从栈中移除,栈在最高的地址上,所以添加的变量地址会逐渐变小,里面的内容可读可写。

2.堆区:一般由程序员分配和释放内存空间,例如我们在使用链表申请节点内存时,malloc函数申请的内存就是堆区的内存空间,使用完后要用free函数释放空间。里面的内容可读可写。

3.全局区/静态区:全局变量和静态变量就存放在这里,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。 是由系统管理的可读可写的内存。

4.常量区:该内存区存放的常量,数字常量、字符常量、字符串常量等,不允许修改,所以常量区的内存是只读的。

  1. 代码区:存放程序的二进制代码,代码区的内容也是只读型。

====补充题外话

刚好看到了函数参数中有指针常量,忘了是怎么回事了。查了下记录一下

1.const int *p int const *p

本质是一样的 p 改变,但是 *p 不可以改变 即指针指向的值不可以改变,一般用来做对入参的限制,不让入参被改变。 fun(const int *p,int a):入参不可以被改变

2. int *const p

p 不可以改变,*p可以改变,p指向的地址不可以改变,但是*p的内容可以改变

相关内容

热门资讯

玩家必看科普!wpk插件(辅助... 玩家必看科普!wpk插件(辅助挂)好像存在有挂(有挂方法)1、很好的工具软件,可以解锁游戏的wpk插...
让我来分享经验!wepoker... 让我来分享经验!wepoker私人局透视教程(辅助挂)果然存在有挂(有挂教程)1)wepoker私人...
专业讨论!德州局怎么透视(辅助... 专业讨论!德州局怎么透视(辅助挂)竟然有挂(确实有挂)亲,关键说明,德州局怎么透视透视脚本安卓赛季回...
专业讨论!wepoker透视方... 专业讨论!wepoker透视方法(辅助挂)竟然真的有挂(真是有挂)1、操作简单,无需wepoker透...
热点推荐!德普之星辅助器怎么用... 热点推荐!德普之星辅助器怎么用(辅助挂)原来是有挂(有挂解惑)1、许多玩家不知道德普之星辅助器怎么用...