首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么时候你会担心栈的大小?

什么时候你会担心栈的大小?
EN

Stack Overflow用户
提问于 2009-12-17 00:34:45
回答 19查看 3.1K关注 0票数 14

当您在一种允许对非常大的对象使用自动分配的语言中进行编程时,您何时以及如何担心堆栈大小?关于堆栈大小的推理有什么经验法则吗?

EN

回答 19

Stack Overflow用户

发布于 2009-12-17 00:49:24

当您在一种允许您对非常大的对象使用自动分配的语言中进行编程时...

如果我想分配一个非常大的对象,而不是在堆栈上,我可能会在堆上分配它,但包装在auto_ptr中(在这种情况下,当它超出作用域时,它将被释放,就像堆栈驻留对象一样,但不用担心堆栈大小)。

...您何时以及如何担心堆栈大小?

出于习惯,我保守地使用堆栈(例如,任何大于512字节的对象都被分配到堆上),并且我知道堆栈有多大(例如,默认情况下大约1兆字节),因此我知道我不需要担心它。

关于堆栈大小的推理有什么经验法则吗?

  • 非常大的对象可能会破坏堆栈
  • 非常深的递归可能会破坏堆栈
  • 如果有许多线程,并且如果您在内存有限的嵌入式设备上运行,则默认的堆栈大小可能太大(占用太多内存),在这种情况下,您可能需要使用O/S或链接器选项来减小每个线程的堆栈大小。
票数 13
EN

Stack Overflow用户

发布于 2009-12-17 00:48:18

在微控制器上,您通常需要显式地指定堆栈空间(或者,在RAM用于静态分配+任何RAM程序空间后,您会得到剩余的空间)。

票数 11
EN

Stack Overflow用户

发布于 2009-12-17 00:40:18

你开始担心堆栈的大小,因为

  • 您的团队中有人巧妙地发明了一个不断运行的递归函数...
  • 您创建了一个线程工厂,突然需要原来需要的堆栈的十倍(每个线程都需要一个堆栈=>您拥有的线程越多,给定堆栈大小剩下的可用空间就越少)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1915900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档