1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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)

82393aa + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档