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

Linux C语言指针与内存

DavidChin
难度初级
时长 2小时 5分
  • 栈内存中,gcc编译会作内存优化:1)使同一数据结构的变量在一起;2)先定义的变量内存地址会小于后定义的;3) 只有堆内存和栈内存可以写入数据,代码段的内存编译以后无法修改。
    查看全部
  • int array[2];<br><br> int *p=array;<br><br> 而赋值操作也可以由p+=3; *p=101;变成简单的p[3]=101;<br> array为常量指针,不可改变;p为变量指针,可以改变;<br><br> 数组本质上是指针常量 所以,array能做的事情,p也能做到,但反之则不行;<br><br> PS:指针取值有两种方式,一种是*p,另一种是p[i]
    查看全部
    0 采集 收起 来源:指针运算

    2018-03-22

  • 如果指针p已指向数组中的一个元素,则p+1(p++)指向同一数组中的下一个元素,而不是将p的值简单的加1。 p += 3 表示将指针向下移动3个元素。<br>
    查看全部
    0 采集 收起 来源:指针运算

    2018-03-22

  • gdb命令 x/10d 起始地址 从起始位置向后取10个值(10),以10进制输出(d)
    查看全部
  • 静态变量 static关键字。函数调用结束后,静态变量的值不消失。对一个C文件里的全局变量和函数加入static的申明 可以防止被其他C文件误调用,即限定作用域只是当前文件,其他文件中即使有同名变量和函数也不影响。
    查看全部
  • 1.GCC会对内存变量分配进行优化:同一种变量类型会放到一块儿!<br><br><br> 2.静态变量、常量、全局变量存于内存的数据段(数据段位置高于代码段)。<br><br> 3.64位计算机中:地址都是用64bit表示的,所以指针(存储地址)占64bit,即8字节。<br><br> 注意图中:&pa -> &pb的确是增加了8个字节(16进制中满16进1);<br> 4.栈分配内存是由高位到地位 代码段的内存分配是由低到高
    查看全部
  • 代码段在低地址段<br> 桟记录你执行的代码<br> 变量就是和名字一样,只是一个代号,其本质就是内存!存在桟里<br> <br> 记录在栈内存中<br> 调用函数和其运行到第几行<br> 有哪些变量,变量的值<br> <br> 栈从上往下,从大的地址往小的放入<br> <br> p &a 就可以知道a的地址在哪里<br> <br> 指针保存的是内存地址<br>本质就是地址 如图<br> *p = &a<br> &a是地址,p是记录a的地址,p是另一个柜子
    查看全部
  • 高位内存空间分配给操作系统内核使用,低位内存空间分配给用户程序使用。 用户程序的内存空间从低到高又划分为:代码段、数据段、堆、自由可分配内存和栈。 我们编写的函数在编译后存到磁盘,运行程序时,就把源代码编译后的二进制数据加载到内存空间中的代码段中。声明的全局变量或常量放置在数据段。每次调用新的函数,就将新的函数压入栈区。
    查看全部
    0 采集 收起 来源:内存管理

    2016-01-26

  • 若某一个地址不足64位,只是表示残缺的尾数都是前面的0,比如:5685125即0000000005685125 1.注意地址和内存空间的对应。 2.64bit操作系统中0~0*7fffffffffff(11个f)是留给用户/程序员使用的,剩余的0*7fffffffffff~0*ffffffffffffffff是供操作系统调用的)。 3.用户的内存隔离:将应用程序和操作系统的内存隔离开是有好处的,使操作系统更加安全! 4.32bit的计算机最多使用4G的内存!
    查看全部
    0 采集 收起 来源:内存管理

    2016-01-26

  • 尽管用户的内存用完了,操作系统的内存还在,就可以使用操作系统关闭用户程序的内存使用
    查看全部
    0 采集 收起 来源:内存管理

    2016-01-26

  • &a a 代表的内存地址 *a 代表的是这个内存地址所赋的值 *a = *b 表示b地址所赋的值替换a地址所赋的值
    查看全部
  • 使用gdb调试步骤: 1、使用带-g选项的gcc命令编译源文件:gcc -g main.c -o main.out 2、使用gdb工具调试:gdb ./main2.out 3、调试过程中:(gdb): l 列出当前项目源代码(list)→再按l或直接按回车:继续执行上一命令 break 12 将断点打在第12行 start 单步调试 p a 显示当前a的值(print)(当前行的命令未完全执行) n 进入下一行(next) s 进入当前函数内部(step) bt 查看函数堆栈(在上方的函数先执行) f 1 切换到1号栈 q 退出调试
    查看全部
    0 采集 收起 来源:gdb工具的使用

    2016-01-25

  • 指针变量 定义int *a 地址符号&a
    查看全部
  • char *p="hello world"; 这段字符串是存储在内存 代码段中的,不允许被修改
    查看全部
  • 内存分配
    查看全部
    0 采集 收起 来源:内存管理

    2016-01-23

举报

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

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