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
hashTable *table = malloc(N*sizeof(hashTable)); //allocate memory
... use it
free(table); //free memory
于 2013-03-20T13:32:02.493 に答える
1

そのように割り当てるには大きすぎます (ほとんどの実装ではスタック上)。標準では、そのような大規模なオブジェクトの割り当ては保証されていません。代わりに malloc() を使用して動的に割り当てます。

于 2013-03-20T13:24:35.913 に答える