0

在需要构建哈希表时,我必须创建一个包含至少 1,000,000 个项目的大型结构数组。

#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;
}

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

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

4

2 回答 2

1

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

于 2013-03-20T13:24:35.913 回答
1
hashTable *table = malloc(N*sizeof(hashTable)); //allocate memory
... use it
free(table); //free memory
于 2013-03-20T13:32:02.493 回答