-
使用调试功能 gcc -g
gdb ---> 断点调试,单点调试
gcc -g 文件名.c -o 文件名.out ---> 使用gdb编译
gbd ./文件名 ---> 开始执行db调试
l:(list)列出源码
回车继续执行刚刚的命令
start ---> 开始执行
break n ---> 截取第n行断点
print或p a ---> 打印输出变量a
n ---> 跳到下一行继续执行
s ---> step 跳入函数
bt ---> 查看函数堆栈
f ---> 切换函数堆
f 1 ---> 跳转到函数1
q ---> 退出调试
查看全部 -
32位bit:内存编号只能编到32个二进制位
操作系统:管理内存,编号,规划。
用户内存隔离开的好处:
操作系统的内存不会被大量占用
避免机器卡住/卡死/死机等状态
可通过操作系统把应用关闭
使得操作系统更安全
查看全部 -
栈:先进后出,后进先出。由高地址向低地址放入,先放入的后出,后放入的先出。
先放入的分配的内存大于后放入的。
字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、大端两种字节顺序。小端字节序指低字节数据存放在内存低地址处(由右向左),高字节数据存放在内存高地址处;大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处(由左向右)。
示例中的Linux栈内用的就是小端存储(as高字节存放高地址,由上到下)。
查看全部 -
变量只是一个名称,来表示一个内存的地址的简称,(变量就是内存)
而指针则是将变量(对于我们)与地址本质的转化,
更利于理解。
堆栈段:
1. 为函数内部的局部变量提供存储空间。
2. 进行函数调用时,存储“过程活动记录”。
3. 用作暂时存储区。如计算一个很长的算术表达式时,可以将部分计算结果压入堆栈。
数据段(静态存储区):
包括BSS段(Block Started by Symbol)的数据段。BSS段存储未初始化或初始化为0的全局变量、静态变量,具体体现为一个占位符,并不给该段的数据分配空间,只是记录数据所需空间的大小。数据段存储经过初始化的全局和静态变量。
查看全部 -
变量只是一个名称,来表示一个内存的地址的简称,(变量就是内存)
而指针则是将变量(对于我们)与地址本质的转化,
更利于理解。
形象比喻:内存是一个酒店,每个变量就是房间的门牌,通过指针对门牌来找到地址,从而取得里面的东西。
堆栈段:
1. 为函数内部的局部变量提供存储空间。
2. 进行函数调用时,存储“过程活动记录”。
3. 用作暂时存储区。如计算一个很长的算术表达式时,可以将部分计算结果压入堆栈。
数据段(静态存储区):
包括BSS段(Block Started by Symbol)的数据段。BSS段存储未初始化或初始化为0的全局变量、静态变量,具体体现为一个占位符,并不给该段的数据分配空间,只是记录数据所需空间的大小。数据段存储经过初始化的全局和静态变量。
查看全部 -
变量只是一个名称,来表示一个内存的地址的简称,(变量就是内存)
而指针则是将变量(对于我们)与地址本质的转化,
更利于理解。
形象比喻:内存是一个酒店,每个变量就是房间的门牌,通过指针对门牌来找到地址,从而取得里面的东西。
堆栈段:
1. 为函数内部的局部变量提供存储空间。
2. 进行函数调用时,存储“过程活动记录”。
3. 用作暂时存储区。如计算一个很长的算术表达式时,可以将部分计算结果压入堆栈。
数据段(静态存储区):
包括BSS段(Block Started by Symbol)的数据段。BSS段存储未初始化或初始化为0的全局变量、静态变量,具体体现为一个占位符,并不给该段的数据分配空间,只是记录数据所需空间的大小。数据段存储经过初始化的全局和静态变量。
查看全部 -
变量只是一个名称,来表示一个内存的地址的简称,(变量就是内存)
而指针则是将变量(对于我们)与地址本质的转化,
更利于理解。
形象比喻:内存是一个酒店,每个变量就是房间的门牌,通过指针对门牌来找到地址,从而取得里面的东西。
堆栈段:
1. 为函数内部的局部变量提供存储空间。
2. 进行函数调用时,存储“过程活动记录”。
3. 用作暂时存储区。如计算一个很长的算术表达式时,可以将部分计算结果压入堆栈。
数据段(静态存储区):
包括BSS段(Block Started by Symbol)的数据段。BSS段存储未初始化或初始化为0的全局变量、静态变量,具体体现为一个占位符,并不给该段的数据分配空间,只是记录数据所需空间的大小。数据段存储经过初始化的全局和静态变量。
查看全部 -
变量只是一个名称,来表示一个内存的地址的简称,(变量就是内存)
而指针则是将变量(对于我们)与地址本质的转化,
更利于理解。
形象比喻:内存是一个酒店,每个变量就是房间的门牌,通过指针对门牌来找到地址,从而取得里面的东西。
堆栈段:
1. 为函数内部的局部变量提供存储空间。
2. 进行函数调用时,存储“过程活动记录”。
3. 用作暂时存储区。如计算一个很长的算术表达式时,可以将部分计算结果压入堆栈。
数据段(静态存储区):
包括BSS段(Block Started by Symbol)的数据段。BSS段存储未初始化或初始化为0的全局变量、静态变量,具体体现为一个占位符,并不给该段的数据分配空间,只是记录数据所需空间的大小。数据段存储经过初始化的全局和静态变量。
查看全部 -
*p;指针指向的变量值
&p;指针自己所在的地址
标准的C语言中,不允许直接对内存地址进行操作,只能是对操作系统已经分配给的内存空间进行操作。(防止用户自己操作内存地址时侵吞系统内存或者其他程序的内存)
指针保存的是什么?指针保存的就是内存的地址
查看全部 -
计算机是由逻辑电路元件来组成的
计算用二进制
显示为十进制
编程用十六进制
内存中最小的单位是字节 1Byte=8bit
一个十六进制的数字,就可以表示4位二进制数字
查看全部 -
使用调试功能 gcc -g
gdb ---> 断点调试,单点调试
gcc -g 文件名.c -o 文件名.out ---> 使用gdb编译
gbd ./文件名 ---> 开始执行db调试
l:(list)列出源码
回车继续执行刚刚的命令
start ---> 开始执行
break n ---> 截取第n行断点
print或p a ---> 打印输出变量a
n ---> 跳到下一行继续执行
s ---> step 跳入函数
bt ---> 查看函数堆栈
f ---> 切换函数堆
f 1 ---> 跳转到函数1
q ---> 退出调试
查看全部 -
void change(int *a,int b) 其中a为指针参数,*+任意参数或者变量均为指针参数或者变量 在调用该函数时需要在参数前+& 即: change(&a,&b);
变量前加*号表示加入指针。 在main函数中引用指针时是变量前加&号
int *a=&b; a是指针,把b的地址赋给a,a指向b
&表示取地址符
指针变量不赋初值会出错,temp
查看全部 -
因为cpu的地址总线是32位,也就是寻址空间是32位,如果把内存地址比作一户人家的门牌号,那么32位的寻址空间可以给2^32户人家分配门牌号,而计算机中一个内存单位为1个字节,故而32位的操作系统只能使用2^32=(2^10)* (2^10)* (2^10)*( 2^2)=4G字节的内存,这样说应该很清晰了
查看全部 -
void change(int *a,int b) 其中a为指针参数,*+任意参数或者变量均为指针参数或者变量 在调用该函数时需要在参数前+& 即: change(&a,&b);
变量前加*号表示加入指针。 在main函数中引用指针时是变量前加&号
int *a=&b; a是指针,把b的地址赋给a,a指向b
&取地址符
指针变量不赋初值会出错,temp
查看全部 -
gdb 断点调试,单点调试
gcc -g 文件名.out -o 文件名 .out 使用gdb编译
gbd ./文件名.out 执行
(gdb) l 或list 显示源代码
l:(list)列出源码
回车继续执行刚刚的命令
start开始执行
break n ---> 截取第n行断点
print或p a 打印输出a
n 跳到下一行
s 进入函数
bt 查看函数堆栈
f 切换
f 1 跳转到函数1
q 退出调试
查看全部 -
1 指针 数组 字符串
2 堆内存 栈内存
3 GDB 调试工具
查看全部 -
自由可分配内存
查看全部 -
用户内存隔离开的好处
查看全部 -
一个内存的最小存储单位1个字节
查看全部
举报