需要构建哈希表,我必须创建一个至少有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;
}
问题是每当我尝试创建这样的数组时,我都会遇到堆栈溢出。
有没有办法克服这个问题?还有另一种方法来创建这样大的数组吗?
答案 0 :(得分:1)
分配方式太大(在大多数实现中都在堆栈上)。该标准不保证以这种方式分配大的对象。使用malloc()来动态分配它。
答案 1 :(得分:1)
hashTable *table = malloc(N*sizeof(hashTable)); //allocate memory
... use it
free(table); //free memory