2016-05-07 4 views
-1

作成に貼り付けます。 gdbを使用すると、指示unsigned long long* v = new unsigned long long[j]に固執しているようです。 displayコマンドの場合、jの値は2です。は、これは私が(最小限の作業例に縮小)を実行していたコードでのunsigned long long配列

私の質問は、その行にこだわる理由です。ここで立ち往生


gdbの情報

Reading symbols from main...done. 
(gdb) disp n 
1: n = <optimized out> 
(gdb) disp k 
2: k = 4 
(gdb) break main 
Breakpoint 1 at 0x400a80: file main.cpp, line 6. 
(gdb) run Starting program: /home/user/cpp/main 

Breakpoint 1, main() at main.cpp:6 
6 int main() { 
2: k = 4 
1: n = <optimized out> 
(gdb) s 
11 unsigned long long* v = new unsigned long long[j]; 
2: k = 4 
1: n = <optimized out> 
(gdb) disp j 
3: j = 2 
(gdb) s 

+1

ヒント - 使用のstd ::ベクトル<符号なしの長い長い>またはSTD ::代わりに新しい符号なしlong longの[J]の配列、それはメモリリークを防ぐことができますので、より便利です。 – T33C

+0

'std :: cout'ステートメントのいくつかがすぐにこの問題を明らかにしました。 –

+0

@FrankPuffer:この問題では、スタック上に2^32以上の要素が格納されている配列はどこにありますか? –

答えて

3

あなたが代わりにhの内部ループでIをインクリメント

関連する問題