为什么它有 1000 个元素?
class node
{
public:
std::vector<node*> symbs;
int count = 0;
node() : count(0), symbs(26, nullptr) {}
};
int main()
{
node *trees;
}
我可以使用
node *trees = new node;
,没关系,但我不想要干净的内存。我怎样才能以不同的方式做到这一点?
为什么它有 1000 个元素?
您有未初始化的指针,您可以使用它来访问一些随机内存并获得垃圾结果,即未定义的行为。
我可以使用节点 *trees = 新节点;没关系,但我不想要干净的记忆。我怎样才能以不同的方式做到这一点?
您可以只创建对象,而不是指向它的指针:
int main()
{
node trees;
}
对于你的向量,如果你的
node
对象拥有该子节点,它应该包含 std::unique_pointer<node>
或 std::shared_pointer<node>
的向量,具体取决于所有权。注意 - 所有权意味着 2 个节点不应该互相拥有,否则你将得到循环引用和内存泄漏。使用智能指针,您不必创建和实现析构函数以及复制/移动构造函数等。