栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言内存管理及动态内存申请

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言内存管理及动态内存申请

c编译程序占用的内存分为栈区 堆区 未初始化数据区 初始化数据区 代码区

    未初始化数据区(BSS):存放未初始化的全局变量,属于静态内存分配,即程序一开始就将其清零初始化数据区静态数据区(DATA):存放已初始化的全局变量静态变量常量代码区:存放程序的执行代码;栈区(stack):存放函数的参数值 局部变量的值,由编译器自动释放分配;堆区(heap):用于动态的内存分配.用户使用malloc或new函数分配,用户通过free或delete函数释放.

mallocfree和newdelete区别:
相同点:
       都是在堆区申请内存,需要手动申请,手动释放;

不同点:
       1.malloc属于c语言提供的系统函数,有函数开销,需要手动计算申请的内存大小;
       2.new属于c++提供的关键词,没有函数开销,会自动计算申请的内存大小;
               例:int *a = new;  //自己计算
                int *a = malloc(sizeof(int));   //手动计算
       3.delete调用一次析构函数,delete[]多次调用析构函数,一般与new[]配合使用;
       4.new可以调用malloc实现,但malloc不能调用new实现
       5.malloc分配内存后,如果使用过程中发现内存不足,可以使用realloc函数重新进行内存分配,实现内存扩充.
        6.new没有这样直观的配套设施类扩充内存;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/766770.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号