C一些堆栈问题
发布时间:2020-12-16 10:29:33 所属栏目:百科 来源:网络整理
导读:首先我要说的是我已阅读 this tutorial并已阅读 this question.我的问题是: 筹码有多大?是吗 处理器/架构/编译器 依赖? 有没有办法确切知道如何 我有很多记忆 函数/类堆栈和多少 目前正在使用 避免溢出? 使用现代编译器(比如gcc 4.5) 在现代计算机上(比
首先我要说的是我已阅读
this tutorial并已阅读
this question.我的问题是:
>筹码有多大?是吗 如果已经提出并回答了这些问题我很抱歉,欢迎任何链接! 解决方法
>是的,堆栈大小的限制会有所不同,但如果你关心你可能做错了什么. >一般情况下,您无法获得有关程序可用内存量的信息.即使您可以获得此类信息,在使用之前通常也会过时. >如果您共享跨线程数据的访问权限,那么您通常需要序列化访问权限,除非它们是严格只读的. >您可以将堆栈分配的对象的地址传递给另一个线程,在这种情况下,您(再次)必须序列化,除非访问严格是只读的. >即使在具有大量内存的现代机器上,您当然也可以溢出堆栈.堆栈通常仅限于总存储器的相当小的一部分(例如,4MB). >堆栈被分配为系统内存,但通常使用得足以使任何给定时间至少首页或两个通常位于缓存中. >作为堆栈与堆的一部分对访问速度没有直接影响 – 两者通常位于相同的内存芯片中,甚至通常位于同一内存芯片中的不同地址.主要区别在于堆栈通常是连续的并且使用频繁,前几页几乎总是在缓存中.基于堆的内存通常是碎片化的,因此需要更多的机会来获取不在缓存中的数据. >对于应在堆栈上分配的对象的最大大小,几乎没有变化.即使堆栈可能更大,也没有理由在那里分配大型对象. >避免C中内存泄漏的主要方法是RAII(AKA SBRM,基于堆栈的资源管理). >智能指针本身就是一个很大的主题,Boost提供了几种.根据我的经验,集合会产生更大的差异,但基本思想在很大程度上是相同的:减轻程序员在特定对象可以使用或应该被释放时跟踪每种情况.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- postgresql – hibernate_sequence为什么以及如何用于id ge
- Winform出现“未处理FileNotFoundException”
- Latest Flash Player has weird noises/only background so
- Cocos2d-x_保存数据和读取数据
- xml – VAST 3.0视频广告服务器示例?
- ruby-on-rails – Rails:将多个模型聚合到单个视图中(想想
- ruby连接mysql代码
- ReactiveCocoa Weak-Strong Dance
- c# – 将一个使用块包装在另一个使用块中 – 是否过度杀伤?
- ruby 1.9.x,奇怪的解析,发生了什么?