当我在Codeblock上编码时,我一直在试图解决这个问题,但是没有任何运气。
因此,基本上,我在一个函数中有以下代码:
Node * newNode;
newNode->data = num;
//root is defined somwhere at the top as 'Node * root';
root->adj.push_back(newNode);以及以下结构:
struct Node{
int data;
vector<Node*> adj;
};当我对向量执行push_back时,程序只循环2-3秒,并使用非零退出代码退出。如果我动态地分配内存,它似乎是正确工作的。当指针没有指向特定的内存块时,程序会以某种方式爆炸吗?
发布于 2022-06-22 15:52:17
“遍历”不指向对象的指针是C++中未定义的行为。
指针不必指向动态分配的对象,但这是典型的。指针可以指向自动存储对象。例如:
Node bob;
Node* root = &bob;但是,在任何情况下,您都负责管理这些对象的生存期。自动存储对象一直保存到当前作用域的末尾,临时对象一直保存到当前完整表达式的末尾,并动态分配对象直到它们是deleted。
智能指针可以在生命周期管理问题上有所帮助,但它们只会有所帮助。他们解决不了这个问题,你还得意识到一生。
许多后C++语言都有自动垃圾收集功能,从而减少了程序员的生命周期。您在C++中没有这种帮助。
https://stackoverflow.com/questions/72717084
复制相似问题