gpt4 book ai didi

c - 故障安全分配

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:16 25 4
gpt4 key购买 nike

我正在使用 Windows XP。于是我明白auto变量是存放在栈中,指针变量动态生成的数据存放在堆中。

每个程序可用的栈内存和堆内存的大小是固定的。可以为特定程序设置不同吗?如果是,那么 -> 设置是由系统自动完成还是必须以某种方式手动完成?

我计划在 C 中创建一个巨大的结构数组(比如 50000 条记录)。我只能考虑将其声明为以下之一:

  1. 全局和静态创建,例如。结构产品产品[50000];
  2. 本地和动态创建的,例如。结构产品*产品; products = malloc(sizeof(struct Product)*50000);

我只知道:

  • 调用太多函数(递归函数或一个调用另一个函数)会耗尽可用的堆栈内存。
  • Malloc 可能会失败,这意味着没有足够的堆内存可用。

我说得对吗?

场景是应用程序将与系统上的许多其他应用程序一起打开。我不希望此应用程序因内存不足而崩溃。那么有一个巨大的数组并同时吃掉它的故障安全方法是什么?

最佳答案

动态分配根据需要从操作系统获取(虚拟)RAM。

您可以通过/F 编译器开关控制最大堆栈大小。

关于c - 故障安全分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24931859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com