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

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

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

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

EN

Stack Overflow用户

发布于 2009-12-17 03:28:46

在Symbian上玩了很多这个游戏:什么时候使用TBuf (堆栈上有存储的字符串),什么时候使用HBufC (它在堆上分配字符串存储,就像std:: string,所以你必须处理Leave,你的函数需要失败的方法)。

当时(也许现在我还不确定),Symbian线程默认有4k的堆栈。要操作文件名,您需要使用多达512个字节(256个字符)。

正如您可以想象的那样,公认的智慧是“永远不要将文件名放在堆栈上”。但实际上,事实证明,你可以比你想象的更多地逃脱惩罚。当我们开始运行真实程序(TM)时,比如游戏,我们发现我们需要比默认堆栈大小更多的东西,这不是由于文件名或其他特定的大对象,而是由于游戏代码的复杂性。

如果使用堆栈可以使您的代码更简单,并且只要您进行了正确的测试,并且不会完全过火(不要有多个级别的文件处理函数都将一个文件名放在堆栈上),那么我会说,试一试。尤其是当函数需要能够失败的时候,不管你使用的是栈还是堆。如果出现错误,您要么将堆栈大小加倍并在以后更加小心,要么在函数中添加另一个失败案例。世界末日也不是。

票数 2
EN
查看全部 19 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1915900

复制
相关文章

相似问题

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