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

正规网站建设定制有.net源码如何做网站

正规网站建设定制,有.net源码如何做网站,建网站收费,wordpress 注册推广文章目录 写在前面1. CC内存分布2. C语言中动态内存管理方式#xff1a;malloc/calloc/realloc/free3. C内存管理方式#xff08;语法#xff09;3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4. new和delete的实现原理4.1 operator new与operator delete… 文章目录 写在前面1. CC内存分布2. C语言中动态内存管理方式malloc/calloc/realloc/free3. C内存管理方式语法3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4. new和delete的实现原理4.1 operator new与operator delete函数4.2 实现原理4.2.1 内置类型4.2.2 自定义类型 5. 定位new表达式(placement-new)(了解) 写在前面 本篇文章先讨了C/C程序中的内存分布并简单介绍了各个内存段的作用和特点。在此基础上又着重讨论了C语言和C语言中的动态内存管理方式包括malloc()、free()等C语言函数以及new和delete等C语言操作符。进一步探讨了operator new和operator delete函数在C中的作用和使用方式并揭示了new和delete的实现原理。最后对定位new表达式placement-new进行了解析介绍了它在特定场景下的应用及实现原理。 1. CC内存分布 上面图片介绍了C/C程序中的内存分布并详细介绍了各个内存段的作用和特点。 下面我们通过一段代码和相关问题来深入理解C/C程序中的内存分布。 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] abcd;const char* pChar3 abcd;int* ptr1 (int*)malloc(sizeof(int) * 4);int* ptr2 (int*)calloc(4, sizeof(int));int* ptr3 (int*)realloc(ptr2, sizeof(int) * 4);free(ptr1);free(ptr3); /* 1. 选择题选项: A.栈 B.堆 C.数据段(静态区) D.代码段(常量区)globalVar在哪里__c__ staticGlobalVar在哪里__c__staticVar在哪里__c__ localVar在哪里__a__num1 在哪里__a__char2在哪里____ *char2在哪里___pChar3在哪里____ *pChar3在哪里____ptr1在哪里____ *ptr1在哪里____ 2. 填空题sizeof(num1) ____; sizeof(char2) ____; strlen(char2) ____;sizeof(pChar3) ____; strlen(pChar3) ____;sizeof(ptr1) ____; 3. sizeof 和 strlen 区别 }*/2. C语言中动态内存管理方式malloc/calloc/realloc/free C语言中动态内存管理方式malloc/calloc/realloc/free的详细介绍有兴趣的读者可以参考之前写的文章动态内存管理malloc calloc realloc free— C语言[点击蓝色字体跳转]这里就不在赘述。 3. C内存管理方式语法 C语言内存管理方式在C中可以继续使用但有些地方就无能为力而且使用起来比较麻烦。例如在C语言中使用 malloc 和 free 进行内存分配和释放时需要手动计算申请内存空间的大小并且需要对返回值进行强制类型转换容易出错。 因此C又提出了自己的内存管理方式通过new和delete操作符进行动态内存管理。在C中它们不仅可以用于内置类型例如 int、double 等还可以用于自定义类型例如类、结构体等。下面我们来一一介绍。 3.1 new/delete操作内置类型 int main() {// 动态申请一个int类型的空间int* pa new int;// 动态申请一个int类型的空间并初始化为10int* pb new int(10);// 动态申请10个int类型的空间int* nums1 new int[10];// 动态申请10个int类型的空间,并用{1, 2, 3, 4}初始化不完全初始化剩下的默认初始化为0。int* nums2 new int[10] {1, 2, 3, 4};delete pa;delete pb;delete[] nums1;delete[] nums2;return 0; }注意申请和释放单个元素的空间使用new和delete操作符申请和释放连续的空间使用new[]和delete[]注意匹配起来使用。 3.2 new和delete操作自定义类型 class A { public:A(int a 0):_a(a){cout A(int a 0) endl;}~A(){cout ~A() endl;} private:int _a; };int main() {//malloc 和 new 最大的区别是对于自定义类型除了会开空间以外new 还会调用构造函数完成对对象的初始化A* pa1 new A;A* pa2 (A*)malloc(sizeof(A));//free 和 delete 最大的区别是对于自定义类型除了会释放空间以外还会调用析构函数来完成对对象中资源的清理delete pa1;free(pa2);return 0; }注意在申请自定义类型的空间时new会调用构造函数delete会调用析构函数而malloc与free不会。 new/delete 和 malloc/free对于内置类型 是几乎是一样的只是用法不同罢了。 4. new和delete的实现原理 4.1 operator new与operator delete函数 new和delete是用户进行动态内存申请和释放的操作符operator new 和operator delete是 系统提供的全局函数new在底层调用operator new全局函数来申请空间delete在底层通过operator delete全局函数来释放空间。 通过上述两个全局函数的实现知道operator new 实际也是通过malloc来申请空间如果malloc申请空间成功就直接返回否则执行用户提供的空间不足应对措施如果用户提供该措施就继续申请否则就抛异常。operator delete 最终是通过free来释放空间的。 operator new 和operator delete是系统提供的全局函数因此可以显示的调用平常不会这样使用了解。 4.2 实现原理 4.2.1 内置类型 如果申请的是内置类型的空间new和mallocdelete和free基本类似不同的地方是 new/delete申请和释放的是单个元素的空间new[]和delete[]申请和释放的是连续空间。 new在申请空间失败时会抛异常malloc会返回NULL。 4.2.2 自定义类型 new的原理 调用operator new函数申请空间。在申请的空间上执行构造函数完成对象的构造。 delete的原理 在空间上执行析构函数完成对象中资源的清理工作。调用operator delete函数释放对象的空间。 new T[N]的原理 调用operator new[]函数在operator new[]中实际调用operator new函数完成N个对象空间的申请。在申请的空间上执行N次构造函数。 delete[]的原理 在释放的对象空间上执行N次析构函数完成N个对象中资源的清理。调用operator delete[]释放空间实际在operator delete[]中调用operator delete来释放空间。 5. 定位new表达式(placement-new)(了解) 定位new表达式在实际中一般是配合内存池使用。因为内存池分配出的内存没有初始化所以如果是自定义类型的对象需要使用new的定义表达式进行显示调构造函数进行初始化。 至此本片文章就结束了若本篇内容对您有所帮助请三连点赞关注收藏支持下。 创作不易白嫖不好各位的支持和认可就是我创作的最大动力我们下篇文章见 如果本篇博客有任何错误请批评指教不胜感激
http://www.zqtcl.cn/news/82375/

相关文章:

  • 个人博客网站怎么赚钱seo推广多少钱
  • 无障碍 网站 怎么做本地网站建设教程xampp
  • 安卓手机网站源码下载网站积分方案
  • 免费发帖的网站个人网站备案不能盈利
  • 北京海淀网站建设建设银行网站怎么先无贷款呢
  • 德州聊城网站建设扫码支付做进商城网站
  • 没有icp备案的网站工程建设的基本内容
  • 用自己电脑建网站ui设计分析案例
  • 专做男装的网站FPGA毕业设计代做网站
  • 高端设计网站制作国外h5制作网站模板下载
  • 邮编域名做网站成都seo手段
  • 关于asp_sql网站开发的书籍网站建设系统课程
  • 佳木斯网站建设公司asp.net网站开发实例教程pdf
  • 网络营销的基本概念站长工具seo综合查询怎么去掉
  • 网站建设公司yu沧州市任丘建设局网站
  • 修改已经有的网站怎么修改叫企业做的网站可不可以自己改主题
  • 学校网站建设说明东莞网站优化如何
  • 网站平台怎么做的好处莱芜民生广角
  • 昆明驿站网站建设织梦网站首页自动更新
  • 网站做有偿广告需要什么有序百度新闻源网站有哪些
  • 家纺 网站模版电子商务网站建设可用性五个方面
  • 百度做网站要多久专业制作网站价格
  • 宁波网站建设运营网上如何建网站卖量具
  • 国内有wix做的好的网站全包胶衣网站
  • 重庆做网站怎么做建设工程消防备案查询网站
  • 社保门户网站建设方案小松 建设项目 网站
  • 一个公司如何做多个网站备案成品网站灬源码1688
  • 雪狼网站系统如何做 行业社交类网站
  • 网站建设技术李京文企业文化建设内容主要包括
  • 视频网站开发php织梦个人网站模板