局部数组变量生命期结束的那些事
来源:互联网 发布:软件咨询服务合同书 编辑:程序博客网 时间:2024/06/10 07:48
局部数组变量的内存是在函数栈中分配的,函数栈是一级一级的,每进入一个嵌套函数就在栈内存的低地址处为新函数开辟一个栈帧,函数返回后取消这个栈帧,栈帧指示寄存器ESP重新指回当前函数的栈帧,这样刚才那个栈帧中的内存是不应使用的,但是其中的数据还在,通过指针依然可以使用。但是当程序再进入一个嵌套函数时,就会继续在刚才取消栈帧的内存处开辟新栈帧并存储数据,这样就会把原有的数据覆盖。所以读取退出的函数栈中的数据虽然可以,但是不安全,不应这样做。1、指针销毁了,不一定它多指向的空间也销毁了(也就是说上面的指针变量销毁了,它所指向的空间还是在的。上面返回的就是那段空间。)也就是说空间虽然回收给系统了,但是并没有被其他程序使用时,里面的数据就没有被覆盖。系统不会负责给你清理数据的。
2、指针所指向的空间销毁了,不一定指针也跟着销毁了(一般如果我们为指针申请了的动态空间的话,用完之后需要释放,free(p); 这时候我们释放的只是指针指向的空间,而它本身还是存在的。)
在非main函数 返回后,它里面的局部变量都销毁了,但是那部分空间只是没有了名字,空间里的内容还在,返回值是指针类型,是将那部分空间的地址返回。
阅读全文
0 0
- 局部数组变量生命期结束的那些事
- 局部变量,全局变量,静态变量的作用域,生命期?
- C++非局部变量生命期
- 关于局部变量,全局变量,作用域,生命期的概念,程序内存分析
- 成员变量,局部变量-变量的那些事
- 局部变量生存期
- 变量(对象)“生命期”和“作用域”的关系
- 指针的生命期
- 线程的生命期
- DLL的生命期
- Activity的生命期
- 使用static声明的局部变量的生存期
- c++非局部的静态存储期变量的初始化
- 关于c++中局部变量生存期的思考
- 局部函数内变量和对象的生存期
- 那些伤逝的生命
- 变量、内存属性、作用域、生命期
- C语言的那些秘密之---函数返回局部变量
- ubuntu的系统升级遇到的问题和解决方案(已解决)
- 省赛模拟一 又一道简单题
- springMVC之Controller向前台返回值的方法
- 阿里云centos7 上mysql5.7.18安装
- PHP中的Closure闭包
- 局部数组变量生命期结束的那些事
- 使用Rxjs中的subject发射数据
- JS-2-作用域
- 迁移到Thymeleaf3.x,布局方言2.x
- 机器学习:深度信念网络(DBN)原理和实现
- ubuntu 16.04, caffe, matlab2016b 安装
- Feature Pyramid Networks for Object Detection
- Ansible 使用高级进阶
- PAT甲级真题及训练集(24)--1004. Counting Leaves (30)