为了账号安全,请及时绑定邮箱和手机立即绑定

请问在C++中堆栈模块stack的使用中怎么清空堆栈啊?

请问在C++中堆栈模块stack的使用中怎么清空堆栈啊?

狐的传说 2021-12-16 15:11:01
比如,定义stack<int> intstack;之后作了一系列的push(),pop()操作,我想马上把它清空,该怎么办啊?模块类stack里面有没有相应的函数和方法啊?谢谢~
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

当用户离开一个task一段时间后,系统就会清理掉task里出了rootActivity以外的Activity,如果用户又回来了,显示的是rootActivity,就像是用户离开又回来,是放弃以前的东西,开始新的东西。上面说的是默认的情况,有一些Activity的属性可以用来控制和修改这些行为。

alwaysRetainTaskState

如果一个task里的root Activity的alwaysRetainTaskState属性设置为true,那么前面描述的默认情况就不会出现了,task即使过了一段时间也会一直保留所有的Activity。

clearTaskOnLaunch

如果一个task里的root Activity的clearTaskOnLaunch属性设置为true,和alwaysRetainTaskState相反,即使是一瞬间的离开,系 统马上就会清理掉task里出rootActivity以外的所有Activity。

扩展资料

堆栈的作用:

在绝大多数的平台上,堆栈主要完成这么四个事情:

1、临时数据存放。
主要通过 push 和 pop 两个指令完成。这就好比,我们在工作的时候,手边临时拿不了的东西,先暂时放在桌子上,等手头空闲下来了,再移动到该存放的地方。

2、存放函数局部变量。

3、存放函数的虚参。

4、记录调用轨迹。

稍大的程序一般是一个函数调用另一个函数,然后再调用其他函数......为了能够让函数执行后按照原先的顺序返回,堆栈就必须记录调用的轨迹。

堆栈要求太高而导致溢出的原因:

1、需要临时存储的信息太多了。这种情况多发生在用内部函数(例如 max 、read、数组整体赋值 )处理较大量的数组。这种时候,我们可以用循环来代替一些内部函数,或者用循环分批次地处理内部函数。

2、函数局部变量太大。局部变量多数存储在堆栈里,当它很大是,就容易溢出。尤其针对数组大小由虚参给定的情况。



查看完整回答
反对 回复 2021-12-19
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

你不是申请内存出错,是访问了未分配的地址。这就是内存越界造成的,越界写了你不该写内存区域。
内存地址空间是要先申请才能使用的,但不光是你用,c++运行库也有一些全局变量,其中就有你new内存的记录、包括new的这段内存的大小、起始地址。如果你越界修改了内存,那就有两种可能:1、访问到了未申请的地址空间,直接报错,2、修改到不是你申请的内存地址空间,比如说c++运行库的全局变量。
问题的本质在于你之前越界访问了内存空间,好好检查你代码吧。

查看完整回答
反对 回复 2021-12-19
  • 2 回答
  • 0 关注
  • 476 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号