没有合适的资源?快使用搜索试试~ 我知道了~
第7章 Linux应用程序编程基础.ppt
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 136 浏览量
2023-06-08
23:37:32
上传
评论
收藏 159KB PPT 举报
温馨提示
试读
31页
ppt课件参考
资源推荐
资源详情
资源评论
第7章 Linux应用程序编程基础
Linux系统的应用程序是为了完成某项或者某些特定任
务的计算机程序,应用程序和文档组成了软件。应用程序都
是在操作系统基础上运行的,Linux应用程序运行在用户模
式,可以通过Shell或者图形界面与用户交互。应用程序运行
在独立的进程,拥有自己独立的地址空间,通俗的说,在一
个应用程序看来,他自己拥有计算机的资源,并不知道其他
应用程序的存在。本章讲解Linux应用程序开发的重要概念
,主要内容如下:
C内存管理
ANSI C文件读写操作
POSIX文件读写操作
7.1 内存管理和使用
内存管理是计算机编程的一个重要部分,也是许多程序
员头疼的一个部分。在目前的嵌入式系统中,资源仍然是有
限的。在程序设计的时候,内存管理十分重要。C程序的内
存管理灵活,接口简单,这也是初学者容易出错的根本,读
者在学习本节内容的时候应注重多实践。本节首先讲解
Linux程序的基本结构,之后介绍C程序的内存管理函数,
最后给出了C程序内存管理的实例。
7.1.1 堆和栈的区别
在讲解堆和栈的区别之前,先来看一个例子。在第6章
编写的hello_world小程序目录下,输入size hello_world
,得到结果如下:
[dev_user@localhost chap6]$ size hello_world
text data bss dec hex filename
789 256 4 1049 419 hello_world
size操作hello_world程序后输出两行结果,第一行几
个字段是对程序内存区域的描述,第二行是程序各区域使用
情况。
7.1.1 堆和栈的区别
1.栈
栈(stack)是一个由编译器分配释放的区域,用来存放
函数的参数,局部变量等。操作方式类似于数据结构教材里
的栈。当调用函数时,被调用函数的参数和返回值被存储到
当前程序的栈区,之后被调用函数在为自身的自动变量和临
时变量在栈区上分配空间。当函数调用返回时,在栈区内的
参数返回值,自动变量和临时变量等会被释放。这就是为什
么C语言函数参数如果不是指针的话,被修改的参数结果用户
无法得到的原因。
函数的调用和栈的使用方式保证了不同函数内部定义相
同名字的变量不会混淆。栈的管理方式是FILO(First In Last
Out),称作先进后出,学过数据结构的读者知道,栈内的数
据是在一个方向管理的,先到达的数据最后被读出来,生活
中就有这样的例子,比如火车的栈,就是车头先进入,但是
出来的时候却是车尾先出来,车头最后出。
7.1.1 堆和栈的区别
2.堆
堆(heap)一般位于bss段和栈之间,用来动态分配内
存。这段区域由程序员管理,程序员利用操作系统提供的分
配和释放函数使用堆区的内存。如果程序员在堆上分配了一
段内存,却没有释放,在目前主流的操作系统上,退出时会
被操作系统释放。但是这并不是一个好的习惯,因为堆区的
空间不是无限的,过多姆峙浠岬贾露涯诖嬉绯觯�绦蛞斐I
踔帘览!
堆的管理与栈不同,操作系统在堆空间维护一个链表(
请参考数据结构相关定义),每次程序员从堆分配内存的时
候操作系统会从堆区扫描未用空间,当一个空间的大小符合
申请空间的时候,就把此空间返回给程序员,同时会把申请
的空间加入链表;当程序员释放一个空间的时候,操作系统
会从堆的链表中删除指定的节点,并且把释放的空间放回未
用空间。
剩余30页未读,继续阅读
资源评论
等天晴i
- 粉丝: 4892
- 资源: 10万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功