-
GDB 调试工具 命令行 gdb -help // 查看安装及及用法 gcc -g main.c -o main.out // -g 函数编译时加入gdb调试 gdb ./main.out // 运行gdb调试代码 l (list简写) // 显示执行代码 只显示部分 可以输入l或直接回车以继续显示 start // 执行代码(单行执行)默认从主函数main开始 p a(a为变量) // 打印变量a的值 n // 继续执行下一行 s // 进入执行函数中(主函数中调用的函数) bt // 查看函数堆栈 f 1 // 切换到堆栈1(执行函数1)中 q // 退出调试查看全部
-
静态变量 全局变量 常量 还要回头看查看全部
-
中括号,内存偏移,指针变量,数组指针常量查看全部
-
内存地址加1加的不是1,而是当前内存地址指向的数据类型的大小,比如整型,则内存地址加4个字节,即加4查看全部
-
内存操作时,某数据类型所占的空间大小的重要性查看全部
-
p=&a后,获取了a的地址,p++时就是对一个十六进制的地址进行自加运算。查看全部
-
指针变量char *str2 = "hello",用scanf 向str2中输入字符串出错,其实也可以这么理解,指针str2只是指向一个地址,从这个地址开始写入"hello",没有指定内存长度,没有空间去容纳字符串。内存溢出!这个与char str[] = "hello"不同,str已经有了6个字节的内存空间,查看全部
-
数组名称本身是一种指针常量,不可修改 int array[2]; int *p=array; array为常量指针,不可改变;p为变量指针,可以改变; 所以,array能做的事情,p也能做到,但反之则不行;查看全部
-
p pa指找到数据的内存地址(a的地址); p *pa指找到pa中的数据; p &pa指找到pa本身的地址。查看全部
-
栈、先声明的地址大,后声明的地址小,与代码段数据段相反查看全部
-
cpu内存申请优化 指针类型的申请在基本数据类型申请之后。 指针 32位时 占用4个字节 指针 64位时 占用8个字节 CPU在编译的时候对栈内变量的存储地址进行优化,他会将类型相同的变量在连续地址中储存。查看全部
-
C语言中一个整型占32位,一个字节占8位,因此一个整型数字占4个字节查看全部
-
int *pa=&a指将a的地址传给pa。因此p pa看到的是a的地址(&a)。 而p &pa才能看到pa本身的地址。查看全部
-
CPU用地址总线寻址,有多少地址总线,就有多少种状态,就能寻找和使用多大的内存 32bit CPU: 2^32 bit== 4GB 64bit CPU: 2^64 bit 内存分配 系统内核(48位以上) ------------------------------------------- 栈(暂时存储首先执行的程序状态) ------------------------------------------ 自由可分配内存(可动态分配内存) ----------------------------------------- 堆 ---------------------------------------- 数据段(声明一些全局变量或者声明一些常量) ---------------------------------------- 代码段(程序源代码编译后存放在此)查看全部
-
1.编译命令:gcc -g main.c -o main.out; 2.调试命令:gdb ./main.out; 3.调试器: (gdb)list:列出源代码,可以输入l或回车以继续显示; (gdb)break line-number:在指定行数打断点; (gdb)start:开启单步调试; (gdb)p a:打印a变量在内存中的情况; (gdb)n:执行到下一句; (gdb)bt:查看函数堆栈; (gdb)s:进入函数内部; (gdb)f 1:切换到编号为1的函数中; (gdb)q:退出调试;查看全部
举报
0/150
提交
取消