我用 Valgrind 分析了以下代码并得到了以下信息:
Use of uninitialised value of size 8
invalid read of size 8
执行此行时:
compuMethod->keywordlist->push_back(keyword);
但是,我已经清楚地初始化keyword
了......
#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;
class Keyword;
class CompuMethod;
typedef std::vector<Keyword*> KeywordList;
std::map<std::string, CompuMethod*> AllCompuMethods;
class Keyword
{
private:
std::string _name;
public:
Keyword(std::string name) : _name(name) {}
virtual ~Keyword() {}
std::string GetName() { return(_name); }
};
class CompuMethod
{
public:
CompuMethod(){}
~CompuMethod(){}
KeywordList* keywordlist;
};
int main()
{
CompuMethod* compuMethod = new CompuMethod();
Keyword* keyword = new Keyword("terminal");
compuMethod->keywordlist->push_back(keyword);
//Call delete for each new
return 0;
}
我显然忽略了一些东西。我在这条线上做什么:
Keyword* keyword = new Keyword("terminal");
那不是初始化keyword
?