gpt4 book ai didi

c++ - 'new' 和 '=' 与指针的区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:21:01 24 4
gpt4 key购买 nike

根据编译器的不同,这两段代码会产生非常不同的结果,我不明白为什么

node *active_node = new node;

对比

node current_node;
node *active_node;
active_node = &current_node;

根据我的理解,我是手动创建一个节点对象并将其分配给事件节点指针,与上面的动态分配相同。然而,它们在程序的上下文中产生完全不同的结果

最佳答案

在这段代码中:

node *active_node = new node;

您正在动态(堆)内存中分配一个node 对象,然后将其地址分配给active_nodenode 对象将一直存在,直到程序终止,或者直到您将其删除

在这段代码中:

node current_node;
node *active_node;
active_node = &current_node;

您在自动(堆栈)内存中分配current_node,然后将其地址分配给active_nodecurrent_node 对象在超出作用域(函数结束等)时将死亡,留下 active_node 指向无效内存。

关于c++ - 'new' 和 '=' 与指针的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51371079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com