首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将非动态分配的对象推送到指针向量

将非动态分配的对象推送到指针向量
EN

Stack Overflow用户
提问于 2022-06-22 14:09:16
回答 1查看 62关注 0票数 -1

当我在Codeblock上编码时,我一直在试图解决这个问题,但是没有任何运气。

因此,基本上,我在一个函数中有以下代码:

代码语言:javascript
复制
Node * newNode;
newNode->data = num;
//root is defined somwhere at the top as 'Node * root';
root->adj.push_back(newNode);

以及以下结构:

代码语言:javascript
复制
struct Node{
    int data;
    vector<Node*> adj;
};

当我对向量执行push_back时,程序只循环2-3秒,并使用非零退出代码退出。如果我动态地分配内存,它似乎是正确工作的。当指针没有指向特定的内存块时,程序会以某种方式爆炸吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-22 15:52:17

“遍历”不指向对象的指针是C++中未定义的行为。

指针不必指向动态分配的对象,但这是典型的。指针可以指向自动存储对象。例如:

代码语言:javascript
复制
Node bob;
Node* root = &bob;

但是,在任何情况下,您都负责管理这些对象的生存期。自动存储对象一直保存到当前作用域的末尾,临时对象一直保存到当前完整表达式的末尾,并动态分配对象直到它们是deleted。

智能指针可以在生命周期管理问题上有所帮助,但它们只会有所帮助。他们解决不了这个问题,你还得意识到一生。

许多后C++语言都有自动垃圾收集功能,从而减少了程序员的生命周期。您在C++中没有这种帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72717084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档