为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
Linux C语言指针与内存_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

Linux C语言指针与内存

DavidChin
难度初级
时长 2小时 5分
  • 1.打印代码段的地址 查看某个函数编译后的二进制指令段在内存中代码段的地址: (gdb) p &函数名 2.打印数据段的地址 查看某个常量或全局变量在内存中数据段的地址: (gdb) p &常量名(全局变量名) 编译器会对源代码进行优化,编译后的指令顺序与我们编写代码的顺序可能不同。 编译器会将同一类型的变量声明放到一起。 64位操作系统下,指针占8个字节。
    查看全部
  • 除了代码编译后的二进制文件调入代码段以外, 当前调用的函数、当前调用的函数运行到多少行、函数中有哪些变量、这些变量值是多少这些程序执行过程中的状态都存在栈中。
    查看全部
  • 高位内存空间分配给操作系统内核使用,低位内存空间分配给用户程序使用。 用户程序的内存空间从低到高又划分为:代码段、数据段、堆、自由可分配内存和栈。 我们编写的函数在编译后存到磁盘,运行程序时,就把源代码编译后的二进制数据加载到内存空间中的代码段中。声明的全局变量或常量放置在数据段。每次调用新的函数,就将新的函数压入栈区。
    查看全部
    0 采集 收起 来源:内存管理

    2015-09-20

  • 1.生成可调试的程序:使用带 -g 选项的 gcc 命令 $ gcc -g XXX.c 2.使用 gdb 调试程序: $ gdb ./XXX 3.gdb 中调试程序 - 查看源代码,使用 list 命令: (gdb) list(或l) - 设置断点,使用 break 命令: (gdb) break 行号 - 开始单步调试,使用 start 命令: (gdb) start - 显示内存中变量的值,使用 print 命令: (gdb) print(或p) 变量名 - 执行到下一行,使用 next 命令: (gdb) next(或n) - 进入函数内部调试,使用 step 命令: (gdb) step(或s) - 查看函数堆栈,使用 bt 命令: (gdb) bt - 切换函数栈,使用 f 命令: (gdb) f 栈编号(0,1,...) - 退出调试,使用 quit 命令: (gdb) quit(或q)
    查看全部
    0 采集 收起 来源:gdb工具的使用

    2015-09-20

  • int array[2]; int *p=array; array为常量指针,不可改变;p为变量指针,可以改变; 所以,array能做的事情,p也能做到,但反之则不行; PS:指针取值有两种方式,一种是*p,另一种是p[i]
    查看全部
    0 采集 收起 来源:指针运算

    2015-09-19

  • int *p,p[3]表示指针p向下移动3个单位,与p+=3效果相同
    查看全部
    0 采集 收起 来源:指针运算

    2015-09-19

  • 指针的本质就是地址,变量的本质也是地址,而地址里面存储的是程序需要使用到的数据
    查看全部
  • 记住哟
    查看全部
  • 示例代码中,为什么不能通过scanf为指针赋值? 老师通过调试告诉我们:因为指针指向了代码段的内存地址,而不是指向堆和栈。保证只能更改堆和栈的内容。
    查看全部
  • 学C的时候,一个int型变量是占2个字节的,long int型才占4个字节,但用VC++6.0时int型却是占了4个字节,这与编译器有关。在嵌入式C语言中,int型也是占2字节。 32位操作系统的指针变量占4个字节 64为操作系统的指针变量占8个字节
    查看全部
  • 内存分配
    查看全部
    0 采集 收起 来源:内存管理

    2015-09-15

  • int 占4字节 int指针 占8字节 因为64位系统 保存一个地址位标签需要64bit = 8 byte
    查看全部
  • 系统内核 栈↓ 增长 空闲 堆↑ 增长 数据段 代码段
    查看全部
    0 采集 收起 来源:内存管理

    2015-09-12

  • 64位系统中 只有前48位是给程序员使用的。 0x7fffffffffffffff ~ 0x0
    查看全部
    0 采集 收起 来源:内存管理

    2015-09-12

  • *a 取a这个地址的内容 &a 去a这个变量的地址 因为不知道一个指针指向的数据有多大, 所以需要在声明一个指针变量的时候需要明确的类型。
    查看全部

举报

0/150
提交
取消
课程须知
本课程是C语言中级课程,为了更好的学习效果: 1、需要有一定的C语言基础,如果没有基础的同学可以看《C语言入门》这门课。 2、本课程是在Linux环境下讲解,需要熟悉一些Linux命令。如果不了解的话可以在《Linux C语言编程基本原理与实践》这门课程中补充
老师告诉你能学到什么?
1、C语言中的指针是怎么回事 2、Linux下gdb调试工具是怎样使用的 3、指针与内存有着怎样的关系 4、数组与字符串之间的联系
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!