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

 #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我得到了S.F.

错误FYI的屏幕截图
c&#43;&#43; - 字符串,调试和段错误齐头并进-LMLPHP

最佳答案

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

但是,MiniGW的GDB中可能存在错误。如果要确定,则应查找此问题及其修复程序。

我知道这不是完整的答案,但是您应该转到这篇文章并阅读它们,这里有一些解决方案:

代码::阻止论坛的帖子:

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

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

关于c++ - 字符串,调试和段错误齐头并进,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49666868/

10-10 21:28
查看更多