嗨,我正在做这个简单的程序
#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的屏幕截图
最佳答案
在搜索有关此问题的信息时,我在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/