我正在使用Windows XP。所以我明白自动变量存储在堆栈中,并且指针变量的动态生成数据存储在堆中。故障安全分配
堆栈内存和堆内存的数量是否可用于每个已修复的程序。它可以设置为特定的程序不同?如果是,那么 - >该设置是否由系统自动完成,还是必须以某种方式手动完成?
我打算创建一个巨大的数组(50000个说记录)的C.我只能认为它声明为下列之一的结构:
- 全局和静态创建如。结构产品[50000];
- 本地和动态创建例如。结构产品*产品; products = malloc(sizeof(struct Product)* 50000);
我只知道:
- 调用了过多的功能(递归或纯一个在另一个)最多可以使用可用的堆栈存储器。
- Malloc可能会失败,意味着没有足够的堆内存。
对不起,对吗?
这种情况是应用程序将与系统上的许多其他应用程序一起打开。我不希望此应用程序因内存不足而崩溃。那么有什么故障安全的方法有一个巨大的阵列,并吃它?
从你所说的我得到,如果我要绘制一个SET图,那么堆栈内存将在进程内存(进而是系统内存的一个子集)内。堆内存呢?它是来自进程内存区域内部还是外部? – Jazz
每个malloc(或其他动态分配)都会尝试在可用堆中查找块,如果没有,它会向操作系统请求更多内存。 该块成为您的工艺内存的一部分。 – Jakub