10個のバケットを作成して基数ソート用のC++コードを作成しました。 10個のバケットについては、このように作成しました。リンクリストのサイズを '__int64'から 'size_t'に切り捨て
struct node{
struct node* next;
long value;
};
struct node*bucket[10];
for (int i=0; i<10; ++i) {
bucket[i] = (struct node *) malloc (1000000*sizeof(struct node));
}
これは完璧です。
しかし、今、私は修飾されたものバケツサイズのように試してみました100000に私のバケットの量を調達する必要があります。
struct node*bucket[100000];
for (int i=0; i<100000; ++i) {
bucket[i] = (struct node *) malloc (1000000*sizeof(struct node));
}
しかし、私は、私もそれらのバケットを作成することはできませんだと思うこの時間。私はVisual Studioを使ってコードを作成していますが、これはC++です。コンパイラは私にこれらの警告を与えた:
を:C4305警告: '引数': 'size_tの' から '__int64' から切り捨て
:警告C4309: '引数':定数値の切り捨て
私はそれをインターネットで検索しましたが、誰かが数字が大きすぎると言います。リンクされたリストでこのような大きな数を処理するのは初めてです。このコードを再び動作させるために何かを修正する必要はありますか?
ありがとうございます。すべてのアイデアと私が感謝されるのを助ける!
VS2010でこれらの警告のいずれも再生できません。私はx86とx64の両方を試しました。 – Mysticial
私はそれをデバッグしようとしました。そして、 "list.exeの0x00301e77で未処理の例外が発生しました:0xC00000FD:スタックオーバーフロー" –
これは、 'struct node * bucket [100000];'が大きすぎてスタックに収まらないために予想されます。しかし警告は困惑している。 – Mysticial