当前位置: 首页 > news >正文

制冷+网站建设+中企动力盈科互动网站建设制作公司

制冷+网站建设+中企动力,盈科互动网站建设制作公司,简述优化搜索引擎的方法,酒店网站解决方案1、C/C内存分布 【1】栈又叫堆栈 – 非静态局部变量/函数参数/返回值等等#xff0c;栈是向下增长的。 【2】内存映射段 – 是高效的I/O映射方式#xff0c;用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存#xff0c;做进程间通信 【3】堆 – 用于程序运…1、C/C内存分布 【1】栈又叫堆栈 – 非静态局部变量/函数参数/返回值等等栈是向下增长的。 【2】内存映射段 – 是高效的I/O映射方式用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存做进程间通信 【3】堆 – 用于程序运行时动态内存分配堆是可以上增长的。 【4】数据段 – 存储全局数据和静态数据。 【5】代码段 – 可执行的代码/只读常量。 2、C语言中动态内存管理方式malloc/calloc/realloc/free void Test () {int* p1 (int*) malloc(sizeof(int));free(p1);//【1】malloc/calloc/realloc的区别是什么【calloc malloc memset】int* p2 (int*)calloc(4, sizeof (int));int* p3 (int*)realloc(p2, sizeof(int)*10);//【2】这里需要free(p2)吗【不需要】free(p3); }3、C内存管理方式 C语言内存管理方式在C中可以继续使用但有些地方就无能为力而且使用起来比较麻烦因此C又提出了自己的内存管理方式通过 new 和 delete*操作符进行动态内存管理。注意申请和释放单个元素的空间使用 new 和 delete 操作符申请和释放连续的空间使用 new[] 和 delete[]要匹配使用。 int main() {//单个对象int* p1 (int*)malloc(sizeof(int));int* p2 new int; //自动计算大小不需要强转//多个对象int* p3 (int*)malloc(sizeof(int) * 10);int* p4 new int[10];free(p1);free(p3);delete p2;delete[] p4;//额外支持了开空间初始化int* p5 new int(1);int* p6 new int[10] {1, 2, 3};int* p7 new int[10] {};delete p5;delete[] p6;delete[] p7;return 0; }❗注意在申请自定义类型的空间时new 会调用构造函数delete 会调用析构函数而 malloc 与 free 不会 class A { public:A(int a 0): _a(a){cout A(): this endl;}~A(){cout ~A(): this endl;}private:int _a; };struct ListNode {ListNode* _next;int _val;ListNode(int val 0):_val(0), _next(nullptr){} };int main() {//malloc没有办法很好支持动态申请的自定义对象初始化A* p1 (A*)malloc(sizeof(A));//p1-_a 0;//p1-A(1);//自定义类型开空间调用构造函数初始化A* p2 new A;A* p3 new A(3);//自定义类型调用析构函数释放空间delete p2;delete p3;A* p4 new A[10];delete[] p4;A aa1;A aa2;A* p5 new A[10]{ aa1,aa2 }; //有名对象delete[] p5;A* p6 new A[10]{ A(1),A(2) }; //匿名对象delete[] p6;A* p7 new A[10]{ 1,2 }; //隐式类型转换ListNode* n1 new ListNode(1);ListNode* n2 new ListNode(2);ListNode* n3 new ListNode(3);ListNode* n4 new ListNode(4);ListNode* n5 new ListNode(5);n1-_next n2;n2-_next n3;n3-_next n4;n4-_next n5;delete n1;delete n2;delete n3;delete n4;delete n5;return 0; }4、operator new与operator delete 函数 new 和 delete 是用户进行动态内存申请和释放的操作符operator new 和 operator delete 是系统提供的全局函数new 在底层调用 operator new 全局函数来申请空间delete 在底层通过 operator delete 全局函数来释放空间。operator new 实际也是通过 malloc 来申请空间如果 malloc 申请空间成功就直接返回否则执行用户提供的空间不足应对措施如果用户提供该措施就继续申请否则就抛异常。operator delete 最终是通过 free 来释放空间的。 5、new和delete的实现原理 【1】内置类型 如果申请的是内置类型的空间new 和 mallocdelete 和 free 基本类似不同的地方是new/delete 申请和释放的是单个元素的空间new[] 和 delete[] 申请的是连续空间而且 new 在申请空间失败时会抛异常malloc 会返回 NULL 【2】自定义类型 new的原理 1调用 operator new 函数申请空间 2在申请的空间上执行构造函数完成对象的构造delete的原理 1在空间上执行析构函数完成对象中资源的清理工作 2调用 operator delete 函数释放对象的空间new T[N]的原理 1调用 operator new[] 函数在 operator new[] 中实际调用 operator new 函数完成N个对象空间的申请 2在申请的空间上执行N次构造函数delete[]的原理 1在释放的对象空间上执行N次析构函数完成N个对象中资源的清理 2调用 operator delete[] 释放空间实际在 operator delete[] 中调用 operator delete 来释放空间 6、定位new表达式placement-new 定位new表达式是在已分配的原始内存空间中调用构造函数初始化一个对象。使用格式 new (place_address) type 或者 new (place_address) type(initializer-list) 【place_address 必须是一个指针initializer-list 是类型的初始化列表】 #define _CRT_SECURE_NO_WARNINGS 1 #include iostream using namespace std;class A { public:A(int a 0):_a(a){cout A() endl;}~A(){cout ~A() endl;} private:int _a; };int main() {//newA* p1 (A*)operator new(sizeof(A)); //只开空间没初始化//p1-A(2); //error【不能显示调用构造函数】new(p1)A(2); //【定位new可以显式调用构造函数】//deletep1-~A(); //【可以显式调用析构函数】operator delete (p1);return 0; }7、malloc/free和new/delete的区别 malloc/free 和 new/delete 的共同点是都是从堆上申请空间并且需要用户手动释放。不同的地方是用法底层原理 【1】malloc 和 free 是函数new 和 delete 是操作符 【2】malloc 申请的空间不会初始化new 可以初始化 【3】malloc 申请空间时需要手动计算空间大小并传递new 只需在其后跟上空间的类型即可如果是多个对象[]中指定对象个数即可 【4】malloc 的返回值为 void*, 在使用时必须强转new 不需要因为 new 后跟的是空间的类型 【5】malloc 申请空间失败时返回的是 NULL因此使用时必须判空new 不需要但是new 需要捕获异常 【6】申请自定义类型对象时malloc/free 只会开辟空间不会调用构造函数与析构函数而new 在申请空间后会调用构造函数完成对象的初始化delete 在释放空间前会调用析构函数完成空间中资源的清理创造 new/delete 的目的
http://www.pierceye.com/news/320997/

相关文章:

  • 合肥手机网站制作建设自己做视频的网站
  • 公司网站备案名称广东建设项目备案公示网站
  • 网站建设设计维片长治网站建设公司
  • 商务网站建设兴田德润电话多少世界著名网站开发语言
  • 湖北网站建设公司微信手机网站设计
  • 徐州网站制作需要多少钱网站规划设计方案
  • 设计师常用网站门户重庆注册公司流程和费用标准
  • 网站图片太多怎么优化全民推广
  • 湖南做网站 e磐石网络做网站网站盈利会怎么样
  • 网站关闭流程保定风泉网络科技有限公司
  • 学做网站视频工作室网站需要备案吗
  • 个人网站 后台管理咸阳网站建设xymokj
  • 安阳淘宝网站建设保障性租赁住房管理平台
  • 建设银行网站最近都打不开吗在线设计网名生成器
  • 淮滨网站建设公司建设银行有招投标网站吗
  • 岳阳做公司网站可以做司法考试题的网站
  • 深圳做网站联雅asp.net网站很快吗
  • 网站制作公司交接网站网站建设 上海浦东
  • 甘肃省住房和建设厅网站移动网站登录入口
  • 垦利区建设局网站如何零基础学编程
  • wordpress金融小学生班级优化大师
  • 网站链接怎么做标记在哪个网做免费网站好
  • 山西响应式网站建设制作营销网站建设公司排名
  • 商学院网站建设建议深圳市宝安网站建设
  • 营销型网站建设报价方案中国建设银行舟山分行网站
  • 建游戏网站建筑工程公司管理制度
  • 网站风格配置怎么做wordpress下载弹窗插件
  • 合肥建设工会网站做试管网站
  • 商丘市有没有做网站建设工程检测预约网站
  • 网站产品内容在数据库wordpress都可以干什么