[英]c++, reading files, segmentation fault
我正在阅读此功能。 我使用的main
文件在文件I / O中没有问题,它可以正常连接,关闭,文件也可以。 但是,在阅读结束时我遇到了段错误。 我尝试打印出进行测试,并且错误正在读取最后一行。 完成读取字符串a
的最后一行,然后in.good()
x
,然后in.good()
变为false。 我试过重置in.clear()
,也设置字符串a="";
in.clear()
如果in.good
变为假。 什么都没用。
read(istream& in){
string a;
int x;
in>>a;
while( in.good() ){
in>>x;
char *ch;
strcpy( ch, a.c_str() );
Word cwd(ch);
anObject.add(cwd,x);
}
}
您看到一个段错误,因为没有为ch
分配空间,然后尝试在其上复制字符串。 ch
是一个不属于您的未初始化的内存地址。
您需要为字符串分配空间:
char *ch = new[(MAX_SIZE + 1) * sizeof(char)];
但是为什么这里需要一个char *
? 请注意,如果必须具有C字符串,则始终可以绕过a
并使用a.c_str()
。 我不确定Word
是什么,或者是否需要它是字符串的副本,但是您可以使用: Word cwd(a.c_str())
吗?
看来您没有为char *ch
分配内存。 定义此变量的那一刻,它是堆栈上的一个随机值。 写入随机内存将损坏内存并在清理内存时导致段错误(手动或在函数返回时自动)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.