问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

程序设计中,堆和栈比较重要。栈存取速度大于堆,而且编译器可以修改栈大...

发布网友 发布时间:2023-11-20 19:08

我来回答

2个回答

热心网友 时间:2024-03-31 12:16

学习电脑编程多年了,在程序设计方面也算有一番见解,希望这些经验能对题主有所帮助。

实际上,当我们不考虑缓存时,堆和堆栈的速度是绝对没有差别的。当我们考虑缓存时,因为堆栈是当前代码段中最常被访问的内存,它在缓存上的概率几乎是100%。换句话说,不会有缓存遗漏(不要使用异常,因为我们讨论的是一般情况)。一般来说,缓存遗漏会出现,虽然缓存遗漏可以通过适当的编码方法来减少,但是一般来说,无法与堆栈进行比较。这就是堆栈快速和堆缓慢的原因。如果您已经知道前面的语句,那么您希望通过扩展堆栈来提高程序的性能,这基本上是无用的,因为缓存是固定在指定的机器上的。

您提到的缺省的1M堆栈应该引用调用堆栈。该堆栈用于存储由函数调用传递的参数(不是所有参数都通过堆栈传递)、堆栈指针、返回地址、寄存器备份和每个层函数的局部变量。大多数情况都是足够的,如果你用光了它们,就会出现非法访问等错误。您可能会使用一个1米的例子:一些被调用的函数应用于一个大型的局部变量,例如堆栈上的一个大数组。然后是递归调用,在递归层之后很容易使用1 m。所以我不想递归地使用这个。

现在堆栈通常默认为8M,对吧?事实上,如果你不滥用递归,或者alloca / vla,大多数时候,就足够了。即使它不超过内核限制,通常也不适合驱动大型的,或者它会影响并发进程的数量。并且过程启动时间也应该稍微减少。当然,如果是专用的服务器系统,问题就不严重了。

热心网友 时间:2024-03-31 12:15

也许你会觉得学电脑多年,依然感觉电脑这趟水很深,你会遇到很多问题,这就需要你自己去克服了,慢慢来,相信你会成为电脑高手的。

我觉得x86上面的堆栈内存,主栈是由SS和SP访问,在32位保护模式下,SS登记是一段选择器选择器是一个数字,通过IDT(局部描述符表)或GDT(全局描述符表)选择一个段描述符包含细分市场的规模和范围信息描述。

这就是我所知道的和cpu有关的,段的大小上限为4GB(即使你的电脑没有4G的内存)。之所以说栈主要是用ss和sp访问是因为其他寻址方式访问栈段是完全可以的,不过push和pull指令压栈和出栈看起来要简单一点,至于有没有速度优势?

我猜应该没有吧,否则处理器的构架设计师会被吐槽的。至于为什么操作系统会限制栈段的大小(一般情况下,x86的操作系统控制段大小应该位是通过描述符控制的),因为程序使用栈的空间都不会使用太大的栈空间,因为std调用协议是这样的:(我瞎编的,不要当真) 函数调用时,右边的参数先入栈。





于是每次调用其他函数时,先push各个参数,然后call,call指令会只压入eip或者一起压入cs:eip,取决于短跳转还是长跳转。

然后进入函数之后,函数开始声明局部变量,这些变量就被压栈,紧跟在eip之后,你都用不了多大的栈,多多的分配给你不是浪费吗。并没有资料显示栈会比堆快,除了申请的时候慢了一点之外。当然可能会和高速缓存命中率有关。

堆栈和堆都是内存的组成部分。

没有更快的论证,有些书说堆栈比堆效率高。这是由于访问算法和堆栈访问效率的差异。不同之处在于堆栈是由编译器分配的。例如,如果您定义了一个局部变量,它会自动分配给堆栈,而这个堆是程序员分配的。在C语言中,外显记忆是通过malloc分配存储数据。

...栈存取速度大于堆,而且编译器可以修改栈大小,这个值可以随意设置吗...

回答:也许你会觉得学电脑多年,依然感觉电脑这趟水很深,你会遇到很多问题,这就需要你自己去克服了,慢慢来,相信你会成为电脑高手的。 我觉得x86上面的堆栈内存,主栈是由SS和SP访问,在32位保护模式下,SS登记是一段选择器选择器是一个数字,通过IDT(局部描述符表)或GDT(全局描述符表)选择一个段描述符...

非结构化数据如何可视化呈现?

通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准...

堆和栈的区别

1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据在多个线程或者多个栈之间...

java 中的堆和栈有什么区别?要详细点的 !

与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器...

什么是栈和堆

1、栈区(stack)D 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) D 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)D,全局变量...

java堆和栈的区别

栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类 型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。栈有一个很重要的特殊性,就是存在栈中的数据可以共享。假设...

单片机中栈和堆的区别是什么?

栈由系统自动分配,速度较快。但程序员是无法控制的。堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便。4、存储内容 栈: 在函数调用时,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。当本次函数调用结束后,局部变量...

25 简单的阐述堆和栈的区别?

管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。空间大小:一般来讲在32位系统下,堆内存可以达到4G的空间,从这个角度来看堆内存几乎是没有什么限制的。但是对于栈来讲,一般都是有一定的空间大小的,例如,在VC6下面,默认的栈...

heap和stack有什么区别 java

堆中的变量大小与exe大小关系不大,但分配和释放需要耗费的时间远大于stack中分配内存所需的时间。2.在Java语言里堆(heap)和栈(stack)里的区别1). 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2). 栈的优势是,存取速度比堆要快,...

java中堆和堆栈有什么区别

2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要...

java中什么是堆和栈

栈也是java中的一种内存,是用来执行程序,例如基本类型的变量和对象的引用变量。其优势是存取速度相对于堆要快一些,而且数据可以共享,但栈中的数据大小与生存必须确定,缺乏灵活性。java语言属于混合型语言,是解释型语言和编译型语言之间的一种语言,是一个支持网络计算的面向对象程序设计语言,吸收了...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
有没有人知道海尔董事长的电话 学科思政属于专硕还是学硕 炒锅品牌 是什么呢 有在ubc读商科的前辈嘛??? 哪里有这个黑标七星这款呢? 咨询下,这烟多少价位,是否有爆珠 梦见失钱包的预兆 ...E:\Spider-Man(TM)-Shattered Dimensions\d3dx9_43.dll 为无效的W... 蜘蛛侠破碎维度怎么安装? 是一个文件夹 SpiderManShatteredDimensions... 滑片产生原因 韩信对项羽的评价客观吗6 淘宝账号登陆不上去,提示我重新注册2 税前工资到底啥意思1 深圳市大帝文化发展有限公司怎么样? 为什么QQ验证码注册不上?验证码老是不对~24 申请QQ验证码怎么总是不对的2 怎样认识社会资本运动与单个资本运动的联系和区别?3 曲面投影 家用投影仪怎样实现单台投影曲面融合 高蹈的引证解释 手提电脑无线上网卡有没有包月+速度快的21 我的心被你上了锁是什么歌2 去伦敦旅游的英语作文,有天气状况,景点和路程安排3 全球公爵在实体店可以用吗? 中国人寿保险如果到期该交钱了。没交,那么会从卡里自动扣钱吗?110 上海海事大学考研 船舶与海洋结构物设计与制造专业 怎么样啊?... 什么才是真正的爱情?2206 哪些星座爱憎分明,一旦爱了,就是毫无目的,毫无保留的爱上? 什么是爱,爱的真正含义是什么?835 女主娇蛮任性小时候是富家千金,男主小时候是女主家管家保姆的儿...3 有限公司分公司负责人是法人吗 植物睡眠有哪些特征?3 clssroom怎么读啊 植物是怎样睡眠的9 如何形容一个人的清冷,谪仙40 宁波高新区阶梯科技有限公司怎么样? 130元最多可以买多少支钢笔每支钢笔15元买三支送一支? 宁波市鄞州甬安崎机电工程有限公司怎么样? 宁波甬安光科新材料科技有限公司怎么样? 我的QQ保密问题忘记了怎么办?12 税前年薪到底是啥 蚕会吃蒲公英吗81 怎么用加好友338 手机号显示淘宝帐号过多,登不上了怎么办,我是用支付宝登的,怎... 我刚申请的淘宝账号被限制登陆了怎么办13 webeginourclss什么意思 IBM R61i 7742bfc 有网卡插槽吗…能放3g的上... 我申请退款成功,卖家也退款,怎么钱没到我的银行卡上 我在淘宝网上申请退款成功后,钱是直接退回我的网上银行卡里的嘛... 我在网上买东西,退款了,然后也显示到账了,可是我银行卡里的钱...
  • 焦点

最新推荐

猜你喜欢

热门推荐