C/C++ 局部变量 和new 动态申请

news/2024/5/20 7:38:32 标签: ,

下面一段c++程序

	int i = 5;
	cout << "dui_apply:" << endl;
	while (--i){
		int *dui_apply = new int;
		cout << dui_apply << endl;
	}
	cout <<endl<< "stack_init:" << endl;
	i = 5;
	while (--i){
		int stack_init = 1;
		cout << &stack_init << endl;
	}

程序输出:

dui_apply:
030454D8
0304A6C0
0304E928
0304E968

stack_init:
00DCF744
00DCF744
00DCF744
00DCF744

使用int a=1这种方式编译器是在程序运行前已经在中分配好一个int型名叫a的变量,无论int a=1;是否在循环内部,在数据中a一直都是那个地址对应的a,不会英文int a=1执行的多次就会占用多个不同的内存,这点其实很容易理解。

但是,这样一个简单的问题,在做复制一个链表这个程序时,就栽了跟头,在循环复制链表时,需要申请新的链表节点,而本人却想当然的用了:

ListNode temp=ListNode();

申请一个新的节点,可笑啊!正确的做法当时是临时申请内存:

point=new ListNode();

下面复制链表部分程序比较

//错误的程序,RandomListNode temp=RandomListNode(0);这种方式创建新节点显然错误
while (node->next != nullptr){
//当前节点值为node的值
np->label = node->label;
//跳到下一个node,准备复制
node = node->next;
//新建一个新节点,错误的新建节点
RandomListNode temp=RandomListNode(0);
//q=new RandomListNode(0);
//cout << &temp << endl;
//新节点的值为node的值
temp.label = node->label;
//当前节点的下一个节点为新节点
np->next = &temp;
//当前节点指针指向新节点
np = &temp;
}
//正确的做法,q=new RandomListNode(0);临时申请内存,中
while (node->next != nullptr){
np->label = node->label;
node = node->next;
q=new RandomListNode(0);
q->label = node->label;
np->next = q;
q->next = nullptr;
np = q;
}



http://www.niftyadmin.cn/n/1750256.html

相关文章

10 DelayQueue 延时队列类——Live555源码阅读(一)基本组件类

这是Live555源码阅读的第一部分&#xff0c;包括了时间类&#xff0c;延时队列类&#xff0c;处理程序描述类&#xff0c;哈希表类这四个大类。 本文由乌合之众 lym瞎编&#xff0c;欢迎转载 www.cnblogs.com/oloroso/本文由乌合之众 lym瞎编&#xff0c;欢迎转载 my.oschina.n…

字节跳动面试官问:微服务下如何保证分布式事务的最终一致性?

提起「微服务架构」&#xff0c;有两个永恒话题&#xff1a;服务治理、分布式事务。数据库和业务模块的垂直拆分为我们带来了系统性能、稳定性和开发效率的提升的同时也引入了一些更复杂的问题&#xff0c;例如在数据一致性问题上&#xff0c;我们不再能够依赖数据库的本地事务…

facebook ios sdk 无法登出bug的解决方法

先说下facebook ios sdk中如何不跳到safari而在程序内登陆 // UIDevice *device [UIDevice currentDevice]; // if ([device respondsToSelector:selector(isMultitaskingSupported)] && [device isMultitaskingSupported]) { // if (tryFBAppAuth) { // NS…

01背包 动态规划

对于当前容量的背包&#xff0c;如果放入当前物品&#xff08;可能为了放入该物品而腾出一些空间&#xff09;而使背包总价值增大&#xff0c;那就放入背包。 …

Loki系列文章

Loki安装部署Loki日志系统分布式部署实践四 Cassandra听说&#xff0c;你的Loki还是单体&#xff1f;(上篇)听说&#xff0c;你的Loki还是单体?(下篇)Loki和Fluentd的那点事儿日志从Kafka到Loki的N种方式推荐一个小工具&#xff1a;flogLoki实用技巧如何在Lok中使用LogQL做聚合…

Understanding pixel format in cocos2d

原文貌似被墙&#xff1a;http://www.cocos2d-iphone.org/archives/61 Since cocos2d v0.7.3, you can specify the texture’spixel formatof your PNG/TIFF/BMP/GIF images. The texture’spixel formatis the way the image is stored in GPU memory. Possible pixel format…

使用INTERVAL YEAR TO MONTH类型

Oracle Database 9i数据库引入了一种新特性&#xff0c;可以用来存储时间间隔。时间间隔的例子包括&#xff1a; ● 1年零3个月 ● 25个月 ● -3天5小时16分 ● 1天7小时 ● -56小时 注意&#xff1a; 不要混淆时间间隔与时间值或时间戳的概念。时间间隔记录的是一段时间长度(例…

使用 Prometheus 监控 WireGuard

云原生是一种信仰&#xff0c;是一种全新的技术模式&#xff0c;它不局限于你脑海中固有的那一亩三分地。人有多大胆&#xff0c;地有多大产&#xff0c;只要你敢想&#xff0c;万物皆可云原生。作为一个云原生狂热信徒&#xff0c;给大家看看我的狂热程度&#xff1a;我的所有…