已采纳回答 / 追逐奔跑
你想表达什么?我不是很明白,但是我估计你可能是下面的问题,所以只以为是的解释一番,请斧正。(gdb) p p$6 = (int *) 0x7fffffffde6c这个时候的输出的p的值表示p这个变量存入的地址,指的是p所代表的地址(gdb) p &p$4 = (int **) 0x7fffffffde78这个时候的输出的值是表示p这个变量在内存中的地址,指的是p本身的地址
2016-05-27
最新回答 / 某年某月某日某些遇见3168616
主函数中加入printf(“%d,%d”,x,y);会报错;你定义的x,y的作用域于只在change函数里面可以用;如果你把这句话加入到change内部就可以用了;
2016-04-14
最赞回答 / 小雾3378873
一段程序执行太快了,若想知道该程序在执行过程的每一步执行后对结果的影响或者了解该语句的作用,则需要一种调试工具,让他动作变慢,并且随着你的控制让他一步一步的执行,而且其间你可以用一些命令查看内存,验证结果,这就是gdb调试工具的作用。以下是我的笔记:GDB可以对程序进行断点调试,单步调试,如果用gdb调试,需要对程序重新编译,格式为:gcc –g main.c –o main.out这样生成的main.out才能用gdb调试。需要注意的是,在调试的时候不能删除原代码文件,即main.c ,如果将main....
2016-04-11
最新回答 / 实时编程
0x1 代表一个地址 不管是32位 还是64位系统 都是 使用 一个 32位 2进制 或者64位二进制 来 寻找这个地址而地址 里面 保存的 数据 是一个 8位 2进制数这个 8位2进制 恰巧是一个字节 所以 从0x1 到0x5 增加了 4个字节 不管是 32位 还是64位 地址只是表达 具体位置 里面的 内容 确实个8位的 2进制数 而已
2016-04-01
最新回答 / 慕后端9788028
我按楼主程序运行,在Linux下同样出现相同的情况,执行到循环时,gdb也不能打出值来。换了c-free ,第三个输出就出现莫名的值,我认为这是编译器的问题。
2016-03-26