网站后台更新没有变化软件开发培训
web/
2025/10/2 22:23:54/
文章来源:
网站后台更新没有变化,软件开发培训,手机怎么制作软件app,网址搜索栏内存分布
C中的内存区域主要有以下5种 栈#xff08;堆栈#xff09;#xff1a;存放非静态局部变量/函数参数/函数返回值等等#xff0c;栈是向下增长的【地址越高越先被使用】。栈区内存的开辟和销毁由系统自动执行 堆#xff1a;用于程序运行时动态内存分配#xff…内存分布
C中的内存区域主要有以下5种 栈堆栈存放非静态局部变量/函数参数/函数返回值等等栈是向下增长的【地址越高越先被使用】。栈区内存的开辟和销毁由系统自动执行 堆用于程序运行时动态内存分配由程序员申请和释放内存堆是向上增长的【地址越低越先被使用】。 内存映射段是高效的I/O映射方式用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存做进程间通信。 数据段全局区存储全局数据和静态数据。 代码段常量区存放可执行的代码/只读常量。 C动态内存管理
动态内存申请
动态内存申请申请的是堆区的内存
申请一个类型大小的空间
不初始化申请的空间语法
T* pnew TT代指类型p可以是任意合法标识符
例
int* p new int;即可申请1个int类型大小的未初始化的空间 初始化申请内置类型的空间语法
T* pnew T要初始化的值T代指类型p可以是任意合法标识符
例
int* p new int(200);即可申请1个int类型大小的初始化为200的空间 调用指定构造函数申请自定义类型的空间语法
T* pnew T传给自定义类型的构造函数的参数T代指类型p可以是任意合法标识符 申请连续多个类型大小的空间
不初始化申请的空间语法
T* pnew T【n】T代指类型p可以是任意合法标识符n是要申请的连续的类型空间的个数
例
int* p new int[12];即可申请连续12个int类型大小未初始化的空间 初始化申请内置类型的空间语法
T* pnew T【n】{初始值1初始值2……}T代指类型p可以是任意合法标识符n是要申请的连续的类型空间的个数
例
int* p new int[12] {1,2,3,4,5,6};即可申请连续12个int类型大小的前6个int空间的值为1,2,3,4,5,6后6个int空间值为0的空间 调用指定构造函数申请自定义类型的空间语法
T* pnew T【n】{{传给第一个自定义类型的构造函数的参数}{传给第二个}T代指类型p可以是任意合法标识符n是要申请的连续的类型空间的个数 例 动态内存释放
释放一个类型大小的空间
语法 delete pp是存放了动态内存申请的空间的首地址的指针
例
int* p new int;delete p;释放连续多个类型大小的空间
语法 delete[] pp是存放了动态内存申请的空间的首地址的指针
例
int* p new int[12];delete[] p;operator new和operator delete
这两个都是库里实现好的全局函数 operator new是C语言的malloc的封装函数主要封装了malloc失败时不在返回NULL而是抛异常
即申请空间本质上还是使用malloc
operator delete是C语言的free的封装函数
即释放空间本质上还是使用free new和delete以及new T[]和delete[]实现原理
new
先调用operator new函数申请空间如果是自定义类型就再调用它的构造函数
delete
如果是自定义类型就调用它的析构函数调用operator delete 释放申请的空间
new T[n]
调用operator new申请连续的n个类型大小的空间如果是自定义类型就再调用n次它的构造函数
delete[]
如果是自定义类型就调用n次它的析构函数调用operator delete释放连续的n个类型大小的空间 new的delete与malloc和free的区别 malloc和free是函数new和delete是操作符 malloc申请的空间不能初始化new可以初始化 malloc申请空间失败时返回的是NULL因此使用时必须判空new不需要但是new需要捕获异常 申请自定义类型对象时malloc/free只会开辟空间不会调用构造函数与析构函数而new在申请空间后会调用构造函数完成对象的初始化delete在释放空间前会调用析构函数完成空间中资源的清理 malloc的返回值为void*, 在使用时必须强转new不需要因为new后跟的是空间的类型
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85856.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!