无法在C中创建大型结构数组

时间:2013-03-20 13:23:23

标签: c arrays struct stack-overflow

需要构建哈希表,我必须创建一个至少有1,000,000个项目的大型struct数组。

#include <stdio.h>

#define N 1000003

struct hashTable
{
    char productID[16];
    double points;
};

int main(int argc, char const *argv[])
{
    struct hashTable table[N] = {0};          // Stack Overflow happens here

    return 0;
}

问题是每当我尝试创建这样的数组时,我都会遇到堆栈溢出。

有没有办法克服这个问题?还有另一种方法来创建这样大的数组吗?

2 个答案:

答案 0 :(得分:1)

分配方式太大(在大多数实现中都在堆栈上)。该标准不保证以这种方式分配大的对象。使用malloc()来动态分配它。

答案 1 :(得分:1)

hashTable *table = malloc(N*sizeof(hashTable)); //allocate memory
... use it
free(table); //free memory