C++ Gdb空字符串在传递给函数时变为gobbledygook

C++ Gdb空字符串在传递给函数时变为gobbledygook,c++,gcc,gdb,C++,Gcc,Gdb,看看下面的gdb输出。总而言之:endString是一个空字符串,直到它作为参数传递给构造函数为止 我被难住了。这是否表示堆栈损坏 367 string endString = fTable[i][endTimeIndex]; (gdb) p endString $2 = "" (gdb) n 369 TimeData endObj = TimeData(endString); (gdb) step TimeData::TimeData (this=0xbfb60550, fI

看看下面的gdb输出。总而言之:endString是一个空字符串,直到它作为参数传递给构造函数为止

我被难住了。这是否表示堆栈损坏

367     string endString = fTable[i][endTimeIndex];
(gdb) p endString 
$2 = ""
(gdb) n
369     TimeData endObj = TimeData(endString);
(gdb) step
TimeData::TimeData (this=0xbfb60550, fIsoTime=
    "\000F;\267\370\063(\267\f\361%\267\027\364%\267\023\000\000\000\230\000\000\000\000\300\067\267\004\357\067\267\300\063(\267\300\000\000\000\360\063(\267\364\037(\267\300\063(\267h\326\n\bx\b\266\277,i\031\267\300\063(\267l\361l\267\224I\r\b\314\307k\267\224I\r\b\324\333\r\b\270\b\266\277\265\207\061\267\220\000\000\000l\361l\267\250\b\266\277b\307k\267\344\b\266\277T\n\266\277h\326\n\bl\361l\267l\361l\267\324\333\r\b\330\b\266\277J\304k\267\340\b\266\277\344\b\266\277\330\b\266\277.\275k\267h\326\n\b$\000\000\000\000\000\000\000\230I\r\bl\361l\267\bI\r\b\370\b\266\277\200\276k\267\330\333\r\b\330\333\r\b\bI\r\bp\266k\267<\t\266\277l\361l\267\030\t\266\277\363\266k\267H\333\r\b\330\333\r\b\bI\r\bH\333\r\bl\361l\267l\361l\267X\t\266\277\327\255k\267H\333\r\bF1\031\267\bI\r\bwYh\267\300\063(\267\001\000\000\000\330\333\r\bH\333\r\bX\t\266\277]h\031\267h\t\266\277t\326\n\b\344\361h\267\000\000\000\000x\t\266\277MOh\267\000\000\000\000\000\000\000\000\021\001\000\000 \000\000\000\300"... <Address 0xbfb63000 out of bounds>, __in_chrg=<optimized out>, 
    __vtt_parm=<optimized out>) at TimeData.cpp:164

我不相信
endString
真的是空的。为什么不打印出
endString.size()
?该
\000F
看起来像一个控制字符,您在试图打印控制字符时无法“看到”它们。@PaulMcKenzie查看我的更新。endString看起来确实是空的。所以下一个问题是你的程序能工作吗?进入
TimeData
函数并打印
fIsoTime.size()
。是0吗?@PaulMcKenzie
fIsoTime.size()
是135101376。那么这是什么原因呢?
\uu\vtt\u parm=
您正在调试优化的代码吗?
(gdb) p endString 
$4 = ""
(gdb) p endString.size()
$5 = 0