字符串,调试和分段错误齐头并进

时间:2018-04-05 07:46:37

标签: c++ string debugging segmentation-fault

嗨,我正在做这个简单的程序

 #include <iostream>
 #include <string>

 using namespace std;

 int main (){

      string hi("Hi how are you");

      for(int i = 0;i<4;i++)
           cout<<hi<<endl;

      return 0;
 }

当我编译并运行它时,没有问题,但是当我尝试调试它时,每次IDE程序(Code :: Block 16.01)进入或退出string hi("hi how are you")时它都会给我一个分段错误。

我知道SF是程序试图访问它不应该访问的内存空间,我知道字符串类是一个动态分配内存的C-Sytle字符串,并在程序完成时自动删除它们因此,内存管理应该没有问题,所以这段代码不应该成为问题。

但是在这段代码中,我不明白为什么在调试它时会得到SF。当我第一次尝试调试并退出hi时,没有错误,但是当我尝试观看hi时,它给了我一个SF,当我再次尝试调试时,我走进string hi我得到了SF

错误FYI的屏幕截图 enter image description here

1 个答案:

答案 0 :(得分:1)

当我搜索有关此问题的信息时,我在Code :: Blocks论坛中找到了条目,但它已经很老了。

但是,MiniGW的GDB中可能存在错误。如果你想确定,你应该寻找这个问题及其解决方法。

我知道这不是完整的答案,但你应该去看这些帖子并阅读它们,有一些解决方案:

Code :: Blocks论坛的帖子:

1. Watching std::string in debugger causes segfault?!?

2. Still having seg fault while watching a string....