营销公司网站模板,太原模板建站平台,新乡做网站公司电话,河北石家庄网络公司本节目标 一、C/C内存分布 二、C语言中动态内存管理方式 三、C中动态内存管理 四、operator new与operator delete函数 五、new和delete的实现原理 六、定位new表达式(placement-new) 七、常见面试题 一、C/C内存分布
一个程序占用的内存主要有以下几部分栈区#xff08;stac…本节目标 一、C/C内存分布 二、C语言中动态内存管理方式 三、C中动态内存管理 四、operator new与operator delete函数 五、new和delete的实现原理 六、定位new表达式(placement-new) 七、常见面试题 一、C/C内存分布
一个程序占用的内存主要有以下几部分栈区stack编译器自动分配与释放存放运行时函数分配的局部变量函数参数返回数据返回地址等类似与数据结构里面的栈堆区heap一般由程序员进行分配若没有释放可能导致内存泄露全局区静态区static存放全局变量静态数据常量程序结束后由系统释放全局区又分为已初始化全局区和未初始化全局区未初始化的放一边已初始化的放一边常量区文字常量区存放常量字符串 程序结束后系统释放代码区存放二进制代码存放函数体等二进制代码 二、C语言中动态内存管理方式
四个函数 malloc , calloc , realloc , free1.malloc 动态开辟一块连续的空间自己决定开辟多少malloc底层使用brk和mmap函数实现的当开辟空间小于128k时用brk大于128k时用mmapmalloc是从堆中获取空间当收到申请空间的申请时操作系统中有一个记录空闲内存地址的链表此时会遍历此链表寻找第一个已释放且空间大于所申请空间的堆结点将该节点删除该节点空间给新程序用法2.calloc 开辟空间同时初始化 等于mallocmemset用法3.realloc 对开辟的空间大小进行修改用法4.free 释放开辟空间用法相关面试题malloc/calloc/realloc区别malloc的实现原理? 三、C内存管理方式
C语言内存管理方式可以继续在C中使用但有些地方就有点无能为力而且使用起来有些麻烦因此C有自己的内存管理方式通过new和delete操作符来管理动态内存
1.new/delete操作内置类型
new 跟 malloc 类似delete 跟 free 类似注意释放多空间要加【】注意申请和释放单个空间使用new 和 delete, 申请和释放多个空间使用new[]和delete[]
2.new和delete操作自定义类型
用new创建一个新类对象跟malloc不同的是new还会调用类的构造函数用delete删除的话则会调用类的析构函数malloc跟free都不会调用构造函数和析构函数 四、operator new与operator delete函数重要点进行讲解
总结malloc 申请空间operator new 申请空间报错new 申请空间报错初始化new底层用的operator new, operator new 底层用的malloc 五、new和delete的实现原理
1.内置类型 2.自定义类型 六、定位new表达式(placement-new)了解
定位new表达式是在已分配的原始内存空间中调用构造函数初始化一个对象使用格式使用场景使用例子 七、常见面试题
1.什么是内存泄露内存泄露的危害2.内存泄露分类了解3.如何检测内存泄露?了解4.如何避免内存泄露