首页文章正文

内存为什么要分栈和堆,malloc和new的区别

c语言内存分配方式 2023-10-16 05:59 807 墨鱼
c语言内存分配方式

内存为什么要分栈和堆,malloc和new的区别

如果往里塞的栈帧太多(函数调用层次太深)或栈帧里要开的结构体太大,就会导致栈溢出(stack overf还有一点题外话,就是栈的增长方向是从高地址到低地址的,这个用得不多,暂时不需要去深究。2. 堆(heap) malloc()函数动态分配的内存就属于堆的空间。同样,在单片机启动文件里也有对

所以你可以这么理解c++或者java(jvm)中的内存栈的概念,就是编程语言的作者为了管理内存使用了“栈”这种数据结构(说的再细点就是现代CPU体系结构决定了栈是管理函数调用和局部变量栈适合处理较小的数据,速度快,易于维护,但是容量有限,并且内存空间由编译器自动分配和管理,对程序员来说无法自主控制。堆适合处理大小不固定的数据,容量较大

ˇ▽ˇ 一类存储在栈区,通常是局部变量、操作符栈、函数参数传递和返回值,另一类存储在堆区,通常是较大的结构体(或者OOP中的对象)、需要反复访问的全局变量。堆区就(1) 从软件设计的角度来看,栈代表了处理逻辑,而堆代表了数据,这样分离使得处理逻辑更为清晰,这种隔离、模块化的思想在软件设计的方方面面都有体现(2) 堆与栈

因为堆内存的管理和申请相对复杂,更消耗系统资源,通常生命周期更长使用范围更广的全局变量才推荐使用堆内存,局部变量栈内存本身就能满足时,无需malloc堆内存,增加不必要的内存管理要知道的基本情况是,堆栈比堆快,但有限。如果我错了,请纠正我)。然而,我总是想知道堆栈和堆究竟是如何工作的。RAM只是内存的一块,它不分为"stack"和"heap"(还是?如果是这

后台-插件-广告管理-内容页尾部广告(手机)

标签: malloc和new的区别

发表评论

评论列表

蓝灯加速器 Copyright @ 2011-2022 All Rights Reserved. 版权所有 备案号:京ICP1234567-2号