-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
。
ヒント - 使用のstd ::ベクトル<符号なしの長い長い>またはSTD ::代わりに新しい符号なしlong longの[J]の配列、それはメモリリークを防ぐことができますので、より便利です。 – T33C
'std :: cout'ステートメントのいくつかがすぐにこの問題を明らかにしました。 –
@FrankPuffer:この問題では、スタック上に2^32以上の要素が格納されている配列はどこにありますか? –