-
计算机是由逻辑电路元件来组成的
计算用二进制
显示为十进制
编程用十六进制
内存中最小的单位是字节 1Byte=8bit
一个十六进制的数字,就可以表示4位二进制数字
查看全部 -
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 退出调试
查看全部 -
字符串以\0结束
hell\0 以字符串输出%s hell 以字符输出%c hello
\0不输出,换行就空行
查看全部 -
int (*pquadrate)(int a)=&quadrate;
int s=quadrate(a);
c语言不允许直接操作代码段
代码在代码段
数据在数据段
程序编译运行的状态在栈
变量:在数据段内存中某个地址处存放某个类型的数值
指针:在数据段内存中某个地址处存放某个地址&a,该地址处存放某个变量
查看全部 -
数组与指针的不同在于数组是地址常量,而指针是地址变量
查看全部 -
1. int quadraate(int a);是一个函数 int (*pquadrate)(int a)=&quadrate;将指针pquadtate指向函数quadrate! int s=(*pquadrate)(a)可以调用quadtate函数,这种操作常用于回调函数
查看全部 -
内存地址从大到小依次为系统内核,栈,堆,数据段,代码段。
查看全部 -
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区.
代码段:把源代码编译完成为目标文件的代码,函数等
数据段:全局变量、常量、静态变量等
调用的函数指针的顺序就存放在栈内存,可以理解为栈的先进后出就是函数的调用的顺序
64进制内指针所占内存均为8字节,而32进制中为4字节。
查看全部 -
64位操作系统 c语言 指针类型变量 占用8字节内存空间
32位 占用4字节
根据内存地址。内存地址从大到小依次为系统内核,栈,堆,数据段,代码段
代码段地址,先证明的函数内存地址低, 后声明的函数内存地址高
栈段地址, 在函数被调用时分配内存地址,后进先出,先调用的函数内存地址高,后调用的函数内存地址低;
数据段地址, 存放全局变量, 静态变量,使用低位地址。
查看全部 -
1. int quadraate(int a);是一个函数 int (*pquadrate)(int a)=&quadrate;则是指向这个函数的指针! int s=(*pquadrate)(a)可以调用函数! 2.一个指针变量*q 不加*号:P q 取出自己地址中存储的值(一个地址)。 加*号:P *q 取出指向地址中存储的值。
查看全部 -
操作系统内存管理图
查看全部 -
gdb调试:
gcc -g main.c -o main.out 编程可以单步调试的程序;
l 查看代码;
start 从main函数开始执行;
n 下一行
p 打印
s 进入调用函数
bt 查看函数堆栈
f 栈堆内切换
q 退出调试
查看全部 -
一根地址总线只能表示2种状态,要么0,要么1; 两根地址总线可以表示4种状态,00,11,10,01。 ...... 同理32根地址总线也就是32bit的操作系统可以表示2的32次方种状态。也就是2的32次方个地址。 也就是2的32次方个字节。 软件系统是不通bit的,2的32次方算出来的单位是4294967296个存储地址,而操作系统的能识别的最小单位是byte,所以我们设计操作系统的,给4294967296个存储地址,每个地址分1个byte,所以总共操作系统有4294967296byte,就是4GB。查看全部
-
用于调试的编译问件:gcc -g 文件名.c -o 文件名.out
调试文件:gdb 文件名.out
进入调试状态,列出当前项目软件源代码:l/list,若显示不完整,直接回车键即可继续显示
设置断点:break 行数
单步调试:start
查看变量的值: p/print 变量名
进行下一步:n
按N之后,回车即可进行下一步
进入某一步中查看,在进行到该步时,:s/step
插看函数堆栈:bt
查看函数堆栈是,查看某一堆栈:f 堆栈行
查看全部 -
gdb调试打印内存: x/3d * ,说明:x代表打印,3代表打印长度,d代表十进制输出,*代表首地址
指针运算:int *p; p++ ; 说明:指针运算和类型相关,因为p为int *类型,int类型为4个字节,故p++偏移4个字节。
查看全部
举报