- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在用 C++ 编写一个游戏程序,遇到了一个奇怪的问题,这个问题似乎是这个函数独有的。
当这个函数被调用时,它一直按预期执行,直到返回语句。但是,在执行 return 语句时,代码“跳转”两行到构造函数并再次执行构造函数和 return 语句之间的代码。更重要的是,当我在第二次迭代中检查传递给 FileManager 构造函数的值时,它前面有 'level_directory' 的值(但只有 inside 构造函数,当我检查函数调用所有内容时很好)。
相关信息:
Debugger: GDB 7.6-1
OS: Arch Linux x86_64
IDE: Code::Blocks 12.11
g++ -S -masm=intel main.cpp;cat main.s | c++filt > disasm.s
In file included from game.h:9:0,
from main.cpp:4:
playstate.h:32:45: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
const std::string level_directory = "data/levels/";
.file "main.cpp"
.intel_syntax noprefix
.text
.globl main
.type main, @function
main:
.LFB1826:
.cfi_startproc
.cfi_personality 0x3,__gxx_personality_v0
.cfi_lsda 0x3,.LLSDA1826
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
push rbx
sub rsp, 552
.cfi_offset 3, -24
lea rax, [rbp-560]
mov rdi, rax
.LEHB0:
call _ZN4GameC1Ev
.LEHE0:
jmp .L2
.L3:
lea rax, [rbp-560]
mov rdi, rax
.LEHB1:
call _ZN4Game12HandleEventsEv
lea rax, [rbp-560]
mov rdi, rax
call _ZN4Game6UpdateEv
lea rax, [rbp-560]
mov rdi, rax
call _ZN4Game6RenderEv
.L2:
lea rax, [rbp-560]
mov rdi, rax
call _ZN4Game9isRunningEv
.LEHE1:
test al, al
jne .L3
lea rax, [rbp-560]
mov rdi, rax
.LEHB2:
call _ZN4GameD1Ev
.LEHE2:
mov eax, 0
jmp .L9
.L8:
mov rbx, rax
lea rax, [rbp-560]
mov rdi, rax
call _ZN4GameD1Ev
mov rax, rbx
jmp .L6
.L7:
.L6:
mov rdi, rax
.LEHB3:
call _Unwind_Resume
.LEHE3:
.L9:
add rsp, 552
pop rbx
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1826:
.globl __gxx_personality_v0
.section .gcc_except_table,"a",@progbits
.LLSDA1826:
.byte 0xff
.byte 0xff
.byte 0x1
.uleb128 .LLSDACSE1826-.LLSDACSB1826
.LLSDACSB1826:
.uleb128 .LEHB0-.LFB1826
.uleb128 .LEHE0-.LEHB0
.uleb128 .L7-.LFB1826
.uleb128 0
.uleb128 .LEHB1-.LFB1826
.uleb128 .LEHE1-.LEHB1
.uleb128 .L8-.LFB1826
.uleb128 0
.uleb128 .LEHB2-.LFB1826
.uleb128 .LEHE2-.LEHB2
.uleb128 .L7-.LFB1826
.uleb128 0
.uleb128 .LEHB3-.LFB1826
.uleb128 .LEHE3-.LEHB3
.uleb128 0
.uleb128 0
.LLSDACSE1826:
.text
.size main, .-main
.ident "GCC: (GNU) 4.8.0 20130502 (prerelease)"
.section .note.GNU-stack,"",@progbits
^
和 playstate.cpp
.file "playstate.cpp"
.intel_syntax noprefix
.section .text._ZN5StateC2Ev,"axG",@progbits,_ZN5StateC5Ev,comdat
.align 2
.weak _ZN5StateC2Ev
.type _ZN5StateC2Ev, @function
_ZN5StateC2Ev:
.LFB1:
.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
mov QWORD PTR [rbp-8], rdi
mov rax, QWORD PTR [rbp-8]
mov QWORD PTR [rax], OFFSET FLAT:_ZTV5State+16
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1:
.size _ZN5StateC2Ev, .-_ZN5StateC2Ev
.weak _ZN5StateC1Ev
.set _ZN5StateC1Ev,_ZN5StateC2Ev
.section .text._ZN5StateD2Ev,"axG",@progbits,_ZN5StateD5Ev,comdat
.align 2
.weak _ZN5StateD2Ev
.type _ZN5StateD2Ev, @function
_ZN5StateD2Ev:
.LFB4:
.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
sub rsp, 16
mov QWORD PTR [rbp-8], rdi
mov rax, QWORD PTR [rbp-8]
mov QWORD PTR [rax], OFFSET FLAT:_ZTV5State+16
mov eax, 0
test eax, eax
je .L2
mov rax, QWORD PTR [rbp-8]
mov rdi, rax
call _ZdlPv
.L2:
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE4:
.size _ZN5StateD2Ev, .-_ZN5StateD2Ev
.weak _ZN5StateD1Ev
.set _ZN5StateD1Ev,_ZN5StateD2Ev
.section .text._ZN5StateD0Ev,"axG",@progbits,_ZN5StateD0Ev,comdat
.align 2
.weak _ZN5StateD0Ev
.type _ZN5StateD0Ev, @function
_ZN5StateD0Ev:
.LFB6:
.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
sub rsp, 16
mov QWORD PTR [rbp-8], rdi
mov rax, QWORD PTR [rbp-8]
mov rdi, rax
call _ZN5StateD1Ev
mov rax, QWORD PTR [rbp-8]
mov rdi, rax
call _ZdlPv
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE6:
.size _ZN5StateD0Ev, .-_ZN5StateD0Ev
.section .rodata
.LC0:
.string "data/levels/"
.text
.align 2
.globl _ZN9PlayStateC2Ev
.type _ZN9PlayStateC2Ev, @function
_ZN9PlayStateC2Ev:
.LFB1043:
.cfi_startproc
.cfi_personality 0x3,__gxx_personality_v0
.cfi_lsda 0x3,.LLSDA1043
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
push rbx
sub rsp, 40
.cfi_offset 3, -24
mov QWORD PTR [rbp-40], rdi
mov rax, QWORD PTR [rbp-40]
mov rdi, rax
call _ZN5StateC2Ev
mov rax, QWORD PTR [rbp-40]
mov QWORD PTR [rax], OFFSET FLAT:_ZTV9PlayState+16
lea rax, [rbp-17]
mov rdi, rax
call _ZNSaIcEC1Ev
mov rax, QWORD PTR [rbp-40]
lea rcx, [rax+8]
lea rax, [rbp-17]
mov rdx, rax
mov esi, OFFSET FLAT:.LC0
mov rdi, rcx
.LEHB0:
call _ZNSsC1EPKcRKSaIcE
.LEHE0:
lea rax, [rbp-17]
mov rdi, rax
call _ZNSaIcED1Ev
jmp .L10
.L9:
mov rbx, rax
lea rax, [rbp-17]
mov rdi, rax
call _ZNSaIcED1Ev
mov rax, QWORD PTR [rbp-40]
mov rdi, rax
call _ZN5StateD2Ev
mov rax, rbx
mov rdi, rax
.LEHB1:
call _Unwind_Resume
.LEHE1:
.L10:
add rsp, 40
pop rbx
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1043:
.globl __gxx_personality_v0
.section .gcc_except_table,"a",@progbits
.LLSDA1043:
.byte 0xff
.byte 0xff
.byte 0x1
.uleb128 .LLSDACSE1043-.LLSDACSB1043
.LLSDACSB1043:
.uleb128 .LEHB0-.LFB1043
.uleb128 .LEHE0-.LEHB0
.uleb128 .L9-.LFB1043
.uleb128 0
.uleb128 .LEHB1-.LFB1043
.uleb128 .LEHE1-.LEHB1
.uleb128 0
.uleb128 0
.LLSDACSE1043:
.text
.size _ZN9PlayStateC2Ev, .-_ZN9PlayStateC2Ev
.globl _ZN9PlayStateC1Ev
.set _ZN9PlayStateC1Ev,_ZN9PlayStateC2Ev
.align 2
.globl _ZN9PlayStateD2Ev
.type _ZN9PlayStateD2Ev, @function
_ZN9PlayStateD2Ev:
.LFB1046:
.cfi_startproc
.cfi_personality 0x3,__gxx_personality_v0
.cfi_lsda 0x3,.LLSDA1046
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
push rbx
sub rsp, 24
.cfi_offset 3, -24
mov QWORD PTR [rbp-24], rdi
mov rax, QWORD PTR [rbp-24]
mov QWORD PTR [rax], OFFSET FLAT:_ZTV9PlayState+16
mov rax, QWORD PTR [rbp-24]
add rax, 8
mov rdi, rax
.LEHB2:
call _ZNSsD1Ev
.LEHE2:
mov rax, QWORD PTR [rbp-24]
mov rdi, rax
call _ZN5StateD2Ev
mov eax, 0
test eax, eax
je .L16
mov rax, QWORD PTR [rbp-24]
mov rdi, rax
call _ZdlPv
jmp .L16
.L15:
mov rbx, rax
mov rax, QWORD PTR [rbp-24]
mov rdi, rax
call _ZN5StateD2Ev
mov rax, rbx
mov rdi, rax
.LEHB3:
call _Unwind_Resume
.LEHE3:
.L16:
add rsp, 24
pop rbx
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1046:
.section .gcc_except_table
.LLSDA1046:
.byte 0xff
.byte 0xff
.byte 0x1
.uleb128 .LLSDACSE1046-.LLSDACSB1046
.LLSDACSB1046:
.uleb128 .LEHB2-.LFB1046
.uleb128 .LEHE2-.LEHB2
.uleb128 .L15-.LFB1046
.uleb128 0
.uleb128 .LEHB3-.LFB1046
.uleb128 .LEHE3-.LEHB3
.uleb128 0
.uleb128 0
.LLSDACSE1046:
.text
.size _ZN9PlayStateD2Ev, .-_ZN9PlayStateD2Ev
.globl _ZN9PlayStateD1Ev
.set _ZN9PlayStateD1Ev,_ZN9PlayStateD2Ev
.align 2
.globl _ZN9PlayStateD0Ev
.type _ZN9PlayStateD0Ev, @function
_ZN9PlayStateD0Ev:
.LFB1048:
.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
sub rsp, 16
mov QWORD PTR [rbp-8], rdi
mov rax, QWORD PTR [rbp-8]
mov rdi, rax
call _ZN9PlayStateD1Ev
mov rax, QWORD PTR [rbp-8]
mov rdi, rax
call _ZdlPv
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1048:
.size _ZN9PlayStateD0Ev, .-_ZN9PlayStateD0Ev
.align 2
.globl _ZN9PlayState5EnterEv
.type _ZN9PlayState5EnterEv, @function
_ZN9PlayState5EnterEv:
.LFB1049:
.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
mov QWORD PTR [rbp-8], rdi
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1049:
.size _ZN9PlayState5EnterEv, .-_ZN9PlayState5EnterEv
.align 2
.globl _ZN9PlayState5LeaveEv
.type _ZN9PlayState5LeaveEv, @function
_ZN9PlayState5LeaveEv:
.LFB1050:
.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
mov QWORD PTR [rbp-8], rdi
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1050:
.size _ZN9PlayState5LeaveEv, .-_ZN9PlayState5LeaveEv
.align 2
.globl _ZN9PlayState6ResumeEv
.type _ZN9PlayState6ResumeEv, @function
_ZN9PlayState6ResumeEv:
.LFB1051:
.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
mov QWORD PTR [rbp-8], rdi
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1051:
.size _ZN9PlayState6ResumeEv, .-_ZN9PlayState6ResumeEv
.align 2
.globl _ZN9PlayState5PauseEv
.type _ZN9PlayState5PauseEv, @function
_ZN9PlayState5PauseEv:
.LFB1052:
.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
mov QWORD PTR [rbp-8], rdi
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1052:
.size _ZN9PlayState5PauseEv, .-_ZN9PlayState5PauseEv
.align 2
.globl _ZN9PlayState12HandleEventsEv
.type _ZN9PlayState12HandleEventsEv, @function
_ZN9PlayState12HandleEventsEv:
.LFB1053:
.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
mov QWORD PTR [rbp-8], rdi
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1053:
.size _ZN9PlayState12HandleEventsEv, .-_ZN9PlayState12HandleEventsEv
.align 2
.globl _ZN9PlayState6UpdateEv
.type _ZN9PlayState6UpdateEv, @function
_ZN9PlayState6UpdateEv:
.LFB1054:
.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
mov QWORD PTR [rbp-8], rdi
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1054:
.size _ZN9PlayState6UpdateEv, .-_ZN9PlayState6UpdateEv
.align 2
.globl _ZN9PlayState6RenderEv
.type _ZN9PlayState6RenderEv, @function
_ZN9PlayState6RenderEv:
.LFB1055:
.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
mov QWORD PTR [rbp-8], rdi
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1055:
.size _ZN9PlayState6RenderEv, .-_ZN9PlayState6RenderEv
.align 2
.globl _ZN9PlayState9LoadLevelESs
.type _ZN9PlayState9LoadLevelESs, @function
_ZN9PlayState9LoadLevelESs:
.LFB1056:
.cfi_startproc
.cfi_personality 0x3,__gxx_personality_v0
.cfi_lsda 0x3,.LLSDA1056
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
push rbx
sub rsp, 600
.cfi_offset 3, -24
mov QWORD PTR [rbp-600], rdi
mov QWORD PTR [rbp-608], rsi
mov rax, QWORD PTR [rbp-600]
lea rcx, [rax+8]
lea rax, [rbp-48]
mov rdx, QWORD PTR [rbp-608]
mov rsi, rcx
mov rdi, rax
.LEHB4:
call _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_
.LEHE4:
lea rcx, [rbp-48]
lea rax, [rbp-592]
mov edx, 114
mov rsi, rcx
mov rdi, rax
.LEHB5:
call _ZN11FileManagerC1ERKSsc
.LEHE5:
lea rax, [rbp-32]
lea rcx, [rbp-592]
mov edx, 32
mov rsi, rcx
mov rdi, rax
.LEHB6:
call _ZN11FileManager14ReadLineStringEc
lea rax, [rbp-32]
mov rdi, rax
call _ZNSsD1Ev
.LEHE6:
nop
lea rax, [rbp-592]
mov rdi, rax
.LEHB7:
call _ZN11FileManagerD1Ev
.LEHE7:
lea rax, [rbp-48]
mov rdi, rax
.LEHB8:
call _ZNSsD1Ev
.LEHE8:
jmp .L34
.L33:
mov rbx, rax
lea rax, [rbp-592]
mov rdi, rax
call _ZN11FileManagerD1Ev
jmp .L29
.L32:
mov rbx, rax
.L29:
lea rax, [rbp-48]
mov rdi, rax
call _ZNSsD1Ev
mov rax, rbx
jmp .L30
.L31:
.L30:
mov rdi, rax
.LEHB9:
call _Unwind_Resume
.LEHE9:
.L34:
add rsp, 600
pop rbx
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1056:
.section .gcc_except_table
.LLSDA1056:
.byte 0xff
.byte 0xff
.byte 0x1
.uleb128 .LLSDACSE1056-.LLSDACSB1056
.LLSDACSB1056:
.uleb128 .LEHB4-.LFB1056
.uleb128 .LEHE4-.LEHB4
.uleb128 .L31-.LFB1056
.uleb128 0
.uleb128 .LEHB5-.LFB1056
.uleb128 .LEHE5-.LEHB5
.uleb128 .L32-.LFB1056
.uleb128 0
.uleb128 .LEHB6-.LFB1056
.uleb128 .LEHE6-.LEHB6
.uleb128 .L33-.LFB1056
.uleb128 0
.uleb128 .LEHB7-.LFB1056
.uleb128 .LEHE7-.LEHB7
.uleb128 .L32-.LFB1056
.uleb128 0
.uleb128 .LEHB8-.LFB1056
.uleb128 .LEHE8-.LEHB8
.uleb128 .L31-.LFB1056
.uleb128 0
.uleb128 .LEHB9-.LFB1056
.uleb128 .LEHE9-.LEHB9
.uleb128 0
.uleb128 0
.LLSDACSE1056:
.text
.size _ZN9PlayState9LoadLevelESs, .-_ZN9PlayState9LoadLevelESs
.section .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_,"axG",@progbits,_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_,comdat
.weak _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_
.type _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_, @function
_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_:
.LFB1069:
.cfi_startproc
.cfi_personality 0x3,__gxx_personality_v0
.cfi_lsda 0x3,.LLSDA1069
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
push rbx
sub rsp, 40
.cfi_offset 3, -24
mov QWORD PTR [rbp-24], rdi
mov QWORD PTR [rbp-32], rsi
mov QWORD PTR [rbp-40], rdx
mov rdx, QWORD PTR [rbp-32]
mov rax, QWORD PTR [rbp-24]
mov rsi, rdx
mov rdi, rax
.LEHB10:
call _ZNSsC1ERKSs
.LEHE10:
mov rdx, QWORD PTR [rbp-40]
mov rax, QWORD PTR [rbp-24]
mov rsi, rdx
mov rdi, rax
.LEHB11:
call _ZNSs6appendERKSs
.LEHE11:
jmp .L39
.L38:
mov rbx, rax
mov rax, QWORD PTR [rbp-24]
mov rdi, rax
call _ZNSsD1Ev
mov rax, rbx
mov rdi, rax
.LEHB12:
call _Unwind_Resume
.LEHE12:
.L39:
mov rax, QWORD PTR [rbp-24]
add rsp, 40
pop rbx
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1069:
.section .gcc_except_table
.LLSDA1069:
.byte 0xff
.byte 0xff
.byte 0x1
.uleb128 .LLSDACSE1069-.LLSDACSB1069
.LLSDACSB1069:
.uleb128 .LEHB10-.LFB1069
.uleb128 .LEHE10-.LEHB10
.uleb128 0
.uleb128 0
.uleb128 .LEHB11-.LFB1069
.uleb128 .LEHE11-.LEHB11
.uleb128 .L38-.LFB1069
.uleb128 0
.uleb128 .LEHB12-.LFB1069
.uleb128 .LEHE12-.LEHB12
.uleb128 0
.uleb128 0
.LLSDACSE1069:
.section .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_,"axG",@progbits,_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_,comdat
.size _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_, .-_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_
.weak _ZTV9PlayState
.section .rodata._ZTV9PlayState,"aG",@progbits,_ZTV9PlayState,comdat
.align 32
.type _ZTV9PlayState, @object
.size _ZTV9PlayState, 88
_ZTV9PlayState:
.quad 0
.quad _ZTI9PlayState
.quad _ZN9PlayStateD1Ev
.quad _ZN9PlayStateD0Ev
.quad _ZN9PlayState5EnterEv
.quad _ZN9PlayState5LeaveEv
.quad _ZN9PlayState5PauseEv
.quad _ZN9PlayState6ResumeEv
.quad _ZN9PlayState12HandleEventsEv
.quad _ZN9PlayState6UpdateEv
.quad _ZN9PlayState6RenderEv
.weak _ZTV5State
.section .rodata._ZTV5State,"aG",@progbits,_ZTV5State,comdat
.align 32
.type _ZTV5State, @object
.size _ZTV5State, 88
_ZTV5State:
.quad 0
.quad _ZTI5State
.quad _ZN5StateD1Ev
.quad _ZN5StateD0Ev
.quad __cxa_pure_virtual
.quad __cxa_pure_virtual
.quad __cxa_pure_virtual
.quad __cxa_pure_virtual
.quad __cxa_pure_virtual
.quad __cxa_pure_virtual
.quad __cxa_pure_virtual
.weak _ZTI9PlayState
.section .rodata._ZTI9PlayState,"aG",@progbits,_ZTI9PlayState,comdat
.align 16
.type _ZTI9PlayState, @object
.size _ZTI9PlayState, 24
_ZTI9PlayState:
.quad _ZTVN10__cxxabiv120__si_class_type_infoE+16
.quad _ZTS9PlayState
.quad _ZTI5State
.weak _ZTS9PlayState
.section .rodata._ZTS9PlayState,"aG",@progbits,_ZTS9PlayState,comdat
.type _ZTS9PlayState, @object
.size _ZTS9PlayState, 11
_ZTS9PlayState:
.string "9PlayState"
.weak _ZTS5State
.section .rodata._ZTS5State,"aG",@progbits,_ZTS5State,comdat
.type _ZTS5State, @object
.size _ZTS5State, 7
_ZTS5State:
.string "5State"
.weak _ZTI5State
.section .rodata._ZTI5State,"aG",@progbits,_ZTI5State,comdat
.align 16
.type _ZTI5State, @object
.size _ZTI5State, 16
_ZTI5State:
.quad _ZTVN10__cxxabiv117__class_type_infoE+16
.quad _ZTS5State
.section .rodata
.align 8
.type _ZZL18__gthread_active_pvE20__gthread_active_ptr, @object
.size _ZZL18__gthread_active_pvE20__gthread_active_ptr, 8
_ZZL18__gthread_active_pvE20__gthread_active_ptr:
.quad _ZL28__gthrw___pthread_key_createPjPFvPvE
.weakref _ZL28__gthrw___pthread_key_createPjPFvPvE,__pthread_key_create
.ident "GCC: (GNU) 4.8.0 20130502 (prerelease)"
.section .note.GNU-stack,"",@progbits
有问题的功能:
void
PlayState::LoadLevel(const std::string level_name)
{
std::string full_path = level_directory + level_name;
FileManager file(full_path, 'r');
file.ReadLineString(' ');
return;
}
FileManager 的构造函数:
FileManager::FileManager(const std::string &path, char access_type)
{
buffer = "";
file.exceptions(std::fstream::failbit | std::fstream::badbit);
try
{
switch (access_type)
{
case 'r':
file.open(path, std::ios_base::openmode::_S_in);
break;
case 'w':
file.open(path, std::ios_base::openmode::_S_out);
break;
default:
std::cout << "Access type: " << access_type << " not recognised" << std::endl;
break;
}
}
catch(std::fstream::failure)
{
std::cout << "I/O exception in FileManager constructor.\nPlease check that the file exists.\nPath: " << path << "\nAccess type: " << access_type << std::endl;
}
return;
}
文件管理器::ReadLineString:
/*
Reads the next line and returns it as a string
*/
std::string
FileManager::ReadLineString()
{
getline(file, buffer);
return buffer;
}
/*
As above, but allows to use of a delimiter.
*/
std::string
FileManager::ReadLineString(char delimiter)
{
getline(file, buffer, delimiter);
return buffer;
}
最佳答案
我会对调试器的任何此类行为持保留态度。尝试在构造函数中添加打印语句。很可能,您会发现它根本没有被调用两次。调试器很容易对他们在哪一行源代码感到困惑。
如有疑问,请在调试器中使用 assembly 级步进(即 gdb 中的 si
/ni
)。这将消除对真正执行的内容的任何疑问。
关于c++ - 函数体调用 C++ 末尾的奇怪循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427455/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!