- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UC——1
一.约定
1.作业完成.
2.50-200 lines codes.
二.课程体系
语言
C
C++
算法
算法
数据结构
基础(系统核心(Kernel)编程)
|
Linux/Unix Window MacOSX
PC机 服务器 ARM
设备驱动/进程管理/内存管理/文件目录系统管理/IO
内存管理
文件目录
IO
进程管理
进程创建
进程控制
进程通信
进程同步
线程管理
线程创建
线程同步
线程通信
应用
网络
数据库(pro*c/c++)
UI
shell
定位:提供编程的能力,为设备驱动与Window应用奠定基础.
三.内存管理
硬件层次
内存结构管理
内核层次
内存映射
堆扩展
语言层次
c:malloc
c++:new
数据结构
STL
智能指针
1.问题:
malloc怎么分配空间?
malloc与new的关系?
2.Linux对内存的结构描述
1./proc/${pid}/ 存放进程运行时候所有的信息(包括内存结构)
结论:
任何程序的内存空间分成4个基本部分
1.代码区
2.全局栈区
3.堆
4.局部栈
进程查看
ps aue
2.理解程序的变量与内存空间的关系
结论:
1.内存分四个区.
2.各种变量对应存放区
3.堆栈是一种管理内存的数据结构.
4.查看程序的内存地址.
3.理解malloc的工作的原理
malloc使用一个数据结构(链表)维护分配空间
链表的构成:分配的空间/上一个空间数据/下一个空间/空间大小等信息.
对malloc分配的空间不要越界访问.因为容易破坏后台维护结构.导致malloc/free/calloc/realloc不正常工作.
4.C++的new与malloc的关系
malloc new new[]
realloc new()
calloc new[]
free delete delete[]?
结论:new的实现使用的是malloc来实现的.
区别:new使用malloc后,还要初始化空间.
基本类型,直接初始化成默认值.
UDT类型,调用指定的构造器
delete调用free实现.
delete负责调用析构器.然后在调用free
new与new[]区别
new只调用一个构造器初始化.
new[]循环对每个区域调用构造器.
delete 与delete[]
5.函数调用栈空间的分配与释放
5.1.总结:
1.函数执行的时候有自己的临时栈.
2.函数的参数就在临时栈中.如果函数传递实参.则用来初始化临时参数变量.
3.通过积存器返回值.(使用返回值返回数据)
4.通过参数返回值.(参数必须是指针)
指针指向的区域必须事先分配.
5.如果参数返回指针.参数就是双指针.
5.2.__stdcall __cdecl __fastcall
1.决定函数栈压栈的参数顺序.
2.决定函数栈的清空方式
3.决定了函数的名字转换方式.
6.far near huge指针
near 16
far 32
huge 综合
四.虚拟内存
问题:
一个程序不能访问另外一个程序的地址指向的空间.
理解:
1.每个程序的开始地址0 2.程序中使用的地址不是物理,而是逻辑地址(虚拟内存).
逻辑地址仅仅是编号.编号使用int 4字节整数表示.
文档评论(0)