-
对指针变量而言:
p +=3
p[3]
意义相同
查看全部 -
gdb命令:
x/3d 地址:按照十进制d,连续显示3个(3)变量的地址(x),默认间隔为4个空格
查看全部 -
gcc自动优化功能,会在编译的时候把同一个数据类型的变量放到相邻,a,b,i都是整型,具体谁前谁后不一定。在这个截图中显示:在栈内存里,a,i,b
查看全部 -
gcc -g ./a.out
gdb ./a.out
start
list
查看全部 -
对指针类型的变量,gdb: p *指针变量:
如果该地址在栈,堆,数据段,则 会打印该变量的值
如果该地址在代码段,则会打印该变量所指的代码
定义一个函数指针,使用该函数指针(*函数指针)(要传给函数的变量)
查看全部 -
全局变量gloal:在不同函数中使用global,它们用的是同一个global。
局部变量count:count地址很小,栈空间的地址都很大,说明静态变量(局部变量)不在栈空间,实际上常量,全局变量,静态变量所在的内存都在数据段里,不同函数的变量不管名字是否相同,都在数据段里面占用不同的空间
查看全部 -
f 代码号:切换函数
截图中可以看到count占用的内存空间不同,它们本质不一样,改变一个函数内的count内容,不会改变另一个count的内容
查看全部 -
gdb:
p 变量名:打印该变量内容
bt:
查看全部 -
gdb命令:
list 会显示代码内容
start 编译代码 入口在main(){
n:执行下一条指令
按回车:执行上一条指令
到了另一个函数那一行,按s,进入这个函数里
按bt,显示正在执行的函数 函数0,函数1.。。
最先分配的栈空间地址反而最大
因为我们不知道有多少函数被调用,或者同一个函数被调用几次,为了防止占用操作系统的内存空间
查看全部 -
函数运行时候产生的变量地址占栈内存空间
查看全部 -
64bit中指针类型需要占8个字节
32bit电脑指针类型占4个字节(一些书中所指)
查看全部 -
用户内存又进行了分隔:栈、自由可分配内存、堆,数据段,代码段,
查看全部 -
64位内存分隔为=48+16,用户内存与操作系统内存隔开的好处:
可以通过操作系统把应用程序关闭,避免机器卡住
查看全部 -
2^30=1G,2^40=1T,
操作系统会对所有内存进行编号
编号=唯一的内存字节的地址
1字节存放8个二进制位的数据
查看全部 -
2^10=1024=1k,1024*1024=1M,1024*1024*1024=1G,
查看全部
举报