我正在使用windows XP所以我知道自动变量存储在堆栈中,指针变量的动态生成的数据存储在堆中。
是每个固定程序可用的堆栈内存和堆内存量。是否可以为特定程序设置不同的设置?如果是,那么->设置是由系统自动完成还是必须以某种方式手动完成?
我计划在C语言中创建一个结构的巨大数组(比如50000条记录)。我只能将其声明为以下之一:
全局和静态创建,例如struct产品[50000];
本地和动态创建,例如struct Product*products;products=malloc(sizeof(struct Product)*50000);
我只知道:
调用太多函数(递归的或简单的函数)可能会耗尽可用的堆栈内存。
Malloc可能失败,这意味着没有足够的堆内存可用。
我说得对吗?
场景是应用程序将与系统上的许多其他应用程序一起打开。我不希望这个应用程序因为内存不足而崩溃。那么,拥有一个庞大的阵列并吃掉它的安全方法是什么呢?
最佳答案
动态分配根据需要从操作系统获取(虚拟)RAM。
可以通过/f编译器开关控制最大堆栈大小。
关于c - 故障安全分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24931859/