0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

堆和栈的区别

flyingstar01 来源:flyingstar01 作者:flyingstar01 2025-11-27 18:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一个由C/C 编译的程序占用的内存分为以下几个部分:
栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
堆区(heap):一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束后由系统释放。
文字常量区:常量字符串就是放在这里的。程序结束后由系统释放。
程序代码区:存放函数体的二进制代码。

申请方式:
栈区(stack):
由系统自动分配。例如,声明在函数中一个局部变量 int b;
系统自动在栈中为b开辟空间

堆区(heap):
需要程序员自己申请,并指明大小,在c中malloc函数
如p1 = (char *)malloc(10);
在C 中用new运算符
如p2 = new char[10];
但是注意p1、p2本身是在栈中的。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编译
    +关注

    关注

    0

    文章

    696

    浏览量

    35279
  • STACK
    +关注

    关注

    0

    文章

    15

    浏览量

    3660
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Vibe Coding AI全开发实战

    Vibe Coding AI全:效率翻倍的开发新方式 在科技飞速发展的当下,软件开发领域正经历着一场深刻的变革。传统的编程模式逐渐被一种新兴的、以AI为核心的全开发方式所取代,其中Vibe
    发表于 04-15 16:02

    曙光云AI全平台解锁政企AI新效能

    AI风口席卷政企,能扎进实际场景的实战型AI才是政企刚需!行业空谈AI概念时,曙光云AI全平台已将全自研技术,转化为政企可感知的真实生产力,用落地实力重新定义政企AI标准。
    的头像 发表于 04-07 15:29 357次阅读

    LMP93601:用于热电传感器的高性能模拟前端

    LMP93601:用于热电传感器的高性能模拟前端 在电子设计领域,热电传感器的应用日益广泛,像建筑自动化里的 HVAC 系统控制、手势识别等。而与之匹配的模拟前端(AFE)芯片的性能,对整个系统
    的头像 发表于 02-25 14:00 357次阅读

    IPv6 Only 进入倒计时 ,单替代双成网络演进必然选择

    2025年末,中国工程院院士邬贺铨在“2026ICT行业趋势年会”上强调“双是过去的妥协,IPv6Only才是未来的必然”,这一判断精准点出了全球网络协议演进的核心方向。随着技术兼容方案成熟、政策
    的头像 发表于 12-23 09:59 1708次阅读
    IPv6 Only 进入倒计时 ,单<b class='flag-5'>栈</b>替代双<b class='flag-5'>栈</b>成网络演进必然选择

    Amphenol ZTPD - 2210数字输出热电探测器深度解析

    Amphenol ZTPD - 2210数字输出热电探测器深度解析 在电子工程领域,传感器是获取环境信息的关键部件。今天,我们要深入探讨Amphenol Advanced Sensors的ZTPD
    的头像 发表于 12-10 11:35 578次阅读

    使用Keil MicroLIB时自动设置大小

    Keil编译项目,如果使用微库MicroLIB,就可以使用malloc。微库内部位置一个管理模块。 芯片的RAM大小是固定了的,前面分为全局变量,后面分给,这是一般开发方式。 但是我们在开发
    发表于 12-09 07:04

    Stack到底用来干嘛的呢?

    Stack_Size就是大小,0x00000400就是代表有1K(0x400/1024)的大小。 那这个到底用来干嘛的呢? 比如说我们函数的形参、以及函数里定义的局部变量就是存储在里,所以
    发表于 12-01 08:04

    深度睡眠时为什么串口会发送一 \\0?

    RT,初始化串口,发送数据然后休眠,串口工具会收到CW32L010发送的一� ,AI统计了下 128个字节,是什么原因啊?
    发表于 11-28 07:25

    在Keil5中查看大小

    1、修改启动文件: 方法说明:大小通常在启动文件中定义。可以通过直接修改这个文件中的Stack_Size变量来调整大小。 操作步骤:找到对应的启动文件,定位到Stack_Size的定义处,修改
    发表于 11-14 06:32

    如何在应用程序调试期间分析使用情况

    随着 AMD Vitis 统一软件平台 2021.2 的发布,Vitis 引入了一个 Tcl 脚本,用于在应用程序运行的特定时间点协助查找的内存使用情况。该脚本已延续到后续的 Vitis 版本
    的头像 发表于 10-24 16:54 1040次阅读
    如何在应用程序调试期间分析<b class='flag-5'>栈</b>和<b class='flag-5'>堆</b>使用情况

    这个大小我设置256就是start error 设置128一会start success 一会start error是什么情况?

    error\"); } return 0; } 这个大小我设置256就是start error 设置128一会start success 一会start error是什么情况
    发表于 09-29 07:44

    水泥厂料机与取料机无线连锁控制解决方案实施案例

    在水泥厂的生产流程中,料机和取料机协同作业至关重要。某大型水泥厂的料区和取料区相隔一定距离,以往采用有线连接实现二者的连锁控制,但随着生产规模扩大和设备老化,问题频发。
    的头像 发表于 09-02 18:06 992次阅读
    水泥厂<b class='flag-5'>堆</b>料机与取料机无线连锁控制解决方案实施案例

    自动驾驶中常提的“全”是个啥?有必要“全”吗?

    [首发于智驾最前沿微信公众号]随着自动驾驶技术落地,越来越多车企公布了自己的自动驾驶方案,在很多车企的宣传中,会使用“全自研”的说法来证明自己的实力。所谓“全”,字面意思是全套技术的自主开发
    的头像 发表于 08-27 09:43 1397次阅读
    自动驾驶中常提的“全<b class='flag-5'>栈</b>”是个啥?有必要“全<b class='flag-5'>栈</b>”吗?

    请问wifi SOC与 wifi MCU的区别

    想详细了解wifi SOC与 wifi MCU的区别?比如说为啥54591不可以独立运行,没有内置协议吗?
    发表于 07-09 08:30

    如何理解整流桥

    核心概念一句话:整流桥,就是把“来回跑”的交流电,变成“只往一个方向跑”的直流电的“交通警察”。 一、为什么需要整流? 想象一下水流: 交流电 (AC): 像海水潮汐,一会儿涌向岸边(正方
    的头像 发表于 06-05 17:14 1503次阅读
    如何理解整流桥<b class='flag-5'>堆</b>?