栈的特点:先进后出
最下面的内存最先分配
最先分配的栈地址反而更大
栈的特点:先进后出
静态变量不在栈里头,相同变量名称的静态变量分别在两个函数里便为两个不同变量,属于每个函数特有的;
全局变量为所有函数公用的。其地址不变。
一个函数被多次调用时,静态变量指向的还是数据段一个固定的地址;即不同函数的count是不同的count,但同一个函数不管调用多少次count,它指向的都是数据段的某个地址。
栈
先进的数据分配的地址更大
先进后出,后进先出
代码段越往后输入所分配的地址更大
函数栈以及数据段内存
全局变量gloal:在不同函数中使用global,它们用的是同一个global。

局部变量count:count地址很小,栈空间的地址都很大,说明静态变量(局部变量)不在栈空间,实际上常量,全局变量,静态变量所在的内存都在数据段里,不同函数的变量不管名字是否相同,都在数据段里面占用不同的空间

f 代码号:切换函数
截图中可以看到count占用的内存空间不同,它们本质不一样,改变一个函数内的count内容,不会改变另一个count的内容
gdb:
p 变量名:打印该变量内容
bt:
gdb命令:
list 会显示代码内容
start 编译代码 入口在main(){
n:执行下一条指令
按回车:执行上一条指令
到了另一个函数那一行,按s,进入这个函数里
按bt,显示正在执行的函数 函数0,函数1.。。
最先分配的栈空间地址反而最大
因为我们不知道有多少函数被调用,或者同一个函数被调用几次,为了防止占用操作系统的内存空间
栈:先进后出,后进先出。由高地址向低地址放入,先放入的后出,后放入的先出。
先放入的分配的内存大于后放入的。
字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、大端两种字节顺序。小端字节序指低字节数据存放在内存低地址处(由右向左),高字节数据存放在内存高地址处;大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处(由左向右)。
示例中的Linux栈内用的就是小端存储(as高字节存放高地址,由上到下)。
局部变量:1、在函数里面有效
2、在自己的函数栈里面才有的值
全局变量:1、所有函数公用的
2、修改全局变量呗调用的变量都会发生变化
栈:先进后出,后进先出。由高地址向低地址放入,先放入的后出,后放入的先出。
先放入的分配的内存大于后放入的。
字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、大端两种字节顺序。小端字节序指低字节数据存放在内存低地址处(由右向左),高字节数据存放在内存高地址处;大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处(由左向右)。
示例中的Linux栈内用的就是小端存储(as高字节存放高地址,由上到下)。
先进后出,最先进入的函数在最下面,最先进入的函数地址越小
数据段代码段越往后声明的地址越大
栈越往后声明的地址越小,栈顶向下分配
静态变量在每个函数间都不互相影响,是独立变量。一个函数内的静态变量不管函数运行多少次都在同一位置改动
全局变量被所有的代码使用时都在同一地址处改动,相互影响,是唯一的变量
静态变量,常量,全局变量都在数据段
栈越往后调用的函数,所占的内存越小,从上往下调用,而数据段和代码段则是从下往上占用内存。全局变量,常量,静态变量都是存在内存的数据段中。

内存地址从大到小依次为系统内核,栈,堆,数据段,代码段。
栈先进后出
变量的储存地址
栈的特点:先进后出
栈越往后调用的函数,所占的内存越小,从上往下调用,而数据段和代码段则是从下往上占用内存。全局变量,常量,静态变量都是存在内存的数据段中。
栈的特点:先进后出
最先分配的栈地址会大些,和代码段相反