【发布时间】:2013-11-23 18:57:15
【问题描述】:
我正在做一个小项目,其中包括解析一些文件。 当我用 valgrind 检查我的项目时,我得到了这个错误:
Syscall param open(filename) points to unaddressable byte(s)
根据我的理解(和阅读),这意味着我发送了一个未定义、空或已删除的内存,但我不知道为什么......
这是engine.cpp。它的构造函数从控制台接收“char** argv”变量
//alot of includes and using namespace std.
Engine::Engine(char** args) {
processConfFile(args[1]);
}
void Engine::processConfFile ( char* fileName) {
string* fileContent = fileToString(fileName); //this line is specified at the stacktrace
stringstream contentstream(*fileContent);
// parsing and stuff
delete fileContent;
}
string* Engine::fileToString(const char* fileName) const{
string* content = new string();
ifstream ifs (fileName); // this line produces the error
if (ifs) {
content->assign((istreambuf_iterator<char>(ifs)), (istreambuf_iterator<char>()));
ifs.close();
}
else {
//TODO logger error.
}
return content;
}
你知道是什么导致了这个问题吗? 提前谢谢。
P.S:代码运行良好。文件被正确读取和解析。
【问题讨论】:
标签: c++ memory-leaks valgrind