0
我在D中創建了一個程序來生成(n + 1)個第一個Stern-Brocot序列。設SB(n)爲(n + 1)斯特恩 - 布魯科特序列。我將SB(n)存儲到名爲「n.txt」的文件中。 SB(n)包含(2^n)+1個元素。這個過程很簡單,我們要求一個整數n,並且我們生成SB(0),SB(1)... SB(n)。 問題是,當n> = 15時,我得到:「Segfault(核心轉儲)」。D SEGFAULT(核心轉儲)
的代碼是:
我不知道爲什麼我得到這個段錯誤。你知道爲什麼嗎?
我的D編譯器是LDC。
核心文件:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7a89742 in _aaInX (aa=<incomplete type>,
keyti=0x482e80 <TypeInfo_S3std8typecons18__T5TupleTAyaTAxaZ5Tuple.__init()>, pkey=0x7fffffffd610) at aaA.d:371
371 auto e = aa.a.b[i];
(gdb) bt
#0 0x00007ffff7a89742 in _aaInX (aa=<incomplete type>,
keyti=0x482e80 <TypeInfo_S3std8typecons18__T5TupleTAyaTAxaZ5Tuple.__init()>, pkey=0x7fffffffd610) at aaA.d:371
#1 0x000000000044e44a in std.functional.__T7memoizeS83_D3std5regex18__T9regexImplTAyaZ9regexImplFNfAyaAxaZS3std5regex 12__T5RegexTaZ5RegexVi8Z.memoize() (
_param_0=..., _param_1=...) at /usr/include/d/std/functional.d:602
#2 0x000000000042f5aa in std.regex.__T5regexTAyaZ.regex() (pattern=...,flags=...) at /usr/include/d/std/regex.d:6461
#3 0x000000000042451e in dev.extract() (s=...)
at /home/jonathan/Documents/Recherche/Fermat/SBs/D/Dev/dev.d:134
#4 0x00000000004238cb in dev.SB() (n=15)
at /home/jonathan/Documents/Recherche/Fermat/SBs/D/Dev/dev.d:39
#5 0x0000000000423547 in D main()
at /home/jonathan/Documents/Recherche/Fermat/SBs/D/Dev/dev.d:17
#6 0x00007ffff7a82ab1 in rt.dmain2._d_run_main() (mainFunc=0x423500 <D main>)
at dmain2.d:607
#7 0x00007ffff7a82a3a in rt.dmain2._d_run_main()() at dmain2.d:582
#8 0x00007ffff7a82b09 in rt.dmain2._d_run_main()() at dmain2.d:618
#9 0x00007ffff7a82a3a in rt.dmain2._d_run_main()() at dmain2.d:582
#10 0x00007ffff7a829ed in _d_run_main (argc=1, argv=0x7fffffffe148,
mainFunc=0x423500 <D main>) at dmain2.d:628
#11 0x00007ffff7a825a2 in main (argc=1, argv=0x7fffffffe148) at dmain2.d:383
#12 0x00007ffff6a64b45 in __libc_start_main (main=0x422cc0 <[email protected]>, argc=1, ubp_av=0x7fffffffe148, init=<optimized out>, fini=<optimized out>,rtld_fini=<optimized out>, stack_end=0x7fffffffe138) at libc-start.c:274
#13 0x0000000000423439 in _start()
你是否通過調試器運行它以查看它墜毀的位置?您也可以將核心文件加載到調試器中。爲了記錄,似乎在我的系統上至少n = 25運行良好。 – harald
同樣在這裏;它編譯並在n> = 15上運行。你可以在另一個編譯器上嘗試它,比如dmd嗎? – Nil
你能得到這次崩潰的堆棧跟蹤嗎?在gdb中,輸入'bt'。 – harald