c++ - 字符串声明中的分段
问题描述
运行程序时出现分段错误,该程序是使用 -g 标记使用 g++ 编译的。然后我使用 gdb 调试程序:
源代码提取(clinicFunctions.cpp):
void loadTreatments(string &file, string treatments[20], int &treatmentsCount){
cout << "---LOADING TREATMENTS---" << endl;
ifstream reader(file.c_str());
int lineCounter = 1;
if(!reader){
cerr << "**Error opening file: " << file << "**" << endl;
}
while (reader){
string line; //LINE 299, ERROR OCCURS HERE
int stringLength;
size_t location;
char extraction[20];
size_t length;
string treatment;
getline(reader, line);
stringLength = line.length();
location = line.find(".");
gdb 结果:
Program received signal SIGSEGV, Segmentation fault.
0x77923654 in ?? ()
(gdb) backtrace
#0 0x77923654 in ?? ()
#1 0x775e70b5 in msvcrt!free () from C:\windows\SysWOW64\msvcrt.dll
#2 0x00990000 in ?? ()
#3 0x6fe5a624 in ?? () from C:\MinGW\bin\libstdc++-6.dll
#4 0x6fec971f in ?? () from C:\MinGW\bin\libstdc++-6.dll
#5 0x6fed6353 in ?? () from C:\MinGW\bin\libstdc++-6.dll
#6 0x6fed63a1 in ?? () from C:\MinGW\bin\libstdc++-6.dll
#7 0x6feda29b in ?? () from C:\MinGW\bin\libstdc++-6.dll
#8 0x00402fb1 in _fu22___ZSt4cerr () at clinicFunctions.cpp:299
#9 0x00401643 in main (argc=5, argv=0x990ea0) at clinic.cpp:48
这个错误发生在第三个循环while (reader)
解决方案
推荐阅读
- android - 如何在撰写中处理多个文本字段?
- node.js - Moment JS UTC 时间在 git.heroku 上不起作用
- google-bigquery - 更改表的列顺序
- wordpress - 在 wordpress 网站中创建在线模板制作工具
- sql - 数据从表移动到表,列类型错误
- angular - 相机功能角离子不适用于android
- makefile - 使依赖规则不执行
- javascript - 如何将数据从 Blade 文件传递到 JavaScript?
- c# - 为什么我的 BLE 设备数据是来自配置索引的 FFFFFFF?
- r - 长格式数据帧到宽格式数据帧的不正确转换