【发布时间】:2013-08-24 12:46:27
【问题描述】:
我正在尝试从以下内容中创建节点。当我尝试不使用“int data”时,我能够实例化一个新的结构成员,但添加了另一个成员变量“string name”,由于某种原因,我遇到了内存泄漏。
struct node
{
string name;
int data;
vector<node*> neighbors;
node(string name, int data, node* neighbor)
{
this->name = name;
this->data = data;
neighbors.push_back(neighbor);
}
explicit node()
: name(NULL), data(NULL), neighbors(NULL) {}
explicit node(string name)
: name(name), data(NULL), neighbors(NULL) {}
};
以下行是我收到错误“EXC_BAD_ACCESS (code=1, address=0x0”的地方
int main() {
struct node* root = new node(NULL);
root->name = "root";
root->data = 10;
为什么我只有一个成员变量没有错误,但我又做了一个成员成员变量?我想初始化一些东西吗?我想我正在使用上面的构造函数。请给我一些建议。
谢谢,
【问题讨论】:
-
大错特错,请避免使用指针,不要用NULL初始化std::string。避免 NULL,使用 0 或更好的 nullptr(但不要初始化 std::string!)
标签: c++ memory-management memory-leaks struct nodes