首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将C结构存储在堆栈上是一种好的做法吗?

将C结构存储在堆栈上是一种好的做法吗?
EN

Stack Overflow用户
提问于 2013-07-10 05:23:05
回答 1查看 116关注 0票数 1

在计算中表示一些变量的微小结构肯定应该存储在堆栈中,但更常见的结构又如何呢?

代码语言:javascript
运行
复制
typedef struct {
  int number_of_nodes;
  int number_of_edges;
  char *adjacency_matrix;
} graph_t;

现在,我将graph_t结构存储在堆栈上:

代码语言:javascript
运行
复制
graph_t graph1 = read_graph(PATH);
graph_t graph2 = new_graph(graph1.number_of_nodes);
func(&graph1, &graph2);

是否有理由将此结构保留在堆内存中,而不是堆栈中?

代码语言:javascript
运行
复制
graph_t *graph1 = read_graph(PATH);
graph_t *graph2 = new_graph(graph1->number_of_nodes);
func(graph1, graph2);
EN

回答 1

Stack Overflow用户

发布于 2013-07-10 07:48:16

当堆栈只有几千字节,“堆栈溢出”是一个常见的错误时,你可能正在阅读以前的教科书,而不是一个网站。

在现代PC上,默认情况下堆栈大小为几MB;在Linux机器上,可以尝试ulimit -s。最后我看了看我的上网本,我可以毫不费力地把莎士比亚所有的悲剧都写进书架。是的,有很容易比这个更大的数据集,但你说你的结构相对较小,所以你可能可以在堆栈上容纳数万个(如果不是数百万个)的结构,而没有任何问题。

正如注释中所提到的,将结构直接写入堆栈也具有通常的便利,即不需要分配或释放内存。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17558499

复制
相关文章

相似问题

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