整理了一些离散的概念点
-
1.栈和代码段、数据段不一样,栈是越靠近栈顶,其内存地址越小,而代码段和数据段则是,越往后,其内存地址越大数据段放啥呢:全局变量,常量,函数里的静态变量。内存的规划,从高地址到低地址是:栈段,自由段,堆段,数据段,代码段。栈自堆数代
-
栈的特点:先进后出,
内存地址由大到小。
地址分配:代码,数据段是从下往上分配(先低地址,后高地址),栈是从上往下分配(先高地址,后低地址)
函数中静态变量,局部变量区别: 局部变量在栈(相对数据段而言的高地址)中,而静态变量在数据段(低地址)中. 所以在多次调用函数时,静态变量不会被重新,初始化. 或者这么说,静态变量的生存周期和数据段相同,局部变量
-
32位操作系统(32个地址总线,2的32次幂 2的30次方1024的3次方,就是1G)做多使用4G内存 64位操作系统(2的30次方 =G,2的40次方=T)0xffffffffffffffff - 0x0
-
指针 32位时 占用4个字节 指针 64位时 占用8个字节
-
&a:返回变量a的内存地址
*a:用来保存变量a的内存地址
&和*运算符恰好相反。&运算符接收一个数据,然后告诉你这个数据保存在哪里;*运算符接收一个地址,然后告诉你这个地址中保存的是什么数据。
&:表示获取变量的地址
本文整理了C语言中关于内存管理的关键概念,包括栈、代码段、数据段的区别,内存规划,以及栈和堆的地址分配规则。还探讨了局部变量与静态变量的差异,以及在不同操作系统环境下内存的使用限制。同时,提到了指针在32位和64位系统中的大小以及&和*运算符的作用。
1113

被折叠的 条评论
为什么被折叠?



