热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

与指针相关的'new'和'='之间的区别

如何解决《与指针相关的'new'和'='之间的区别》经验,为你挑选了1个好方法。

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

node *active_node = new node;

VS

node current_node;
node *active_node;
active_node = ¤t_node;

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



1> Filip Vondrá..:

在这段代码中:

node *active_node = new node;

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

在这段代码中:

node current_node;
node *active_node;
active_node = ¤t_node;

您正在分配current_node自动(堆栈)内存,然后分配其地址active_node.当current_node对象超出范围(函数结束等)时,该对象将死亡,留下active_node指向无效的内存.


推荐阅读
author-avatar
BrucelLi
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有