当前位置: 首页 > news >正文

内存四区(栈)

今天我再次学到了有趣的知识,内存四区!

内存四区分为代码区,全局区,栈区,堆区,今天我们详细来讲讲栈区!

内存四区和栈区都是用来存放数据的,而栈区存放的数据具体有两类

1.形参数据,具体也就是指主函数外的函数体,所用到的形参数据,都会保存在栈区

int fung(int  b)//

就像int b,就会保存在栈区

2.局部变量,局部变量都会储存在栈区,什么是局部变量,相信也不用我多说了!总之在函数体以内的,都是局部变量。

注意:不要返回局部变量的地址,编译器会自动开辟和释放。

上面这句话,是什么意思?

很简单,就是在定义函数体的时候,有的时候会有返回值,这个返回值就不能是函数体以内的局部变量。

 

#include<iostream>
using namespace std;
#include<string>
//在栈区中存放两类数据,一是形参,二是局部变量
int*fung()
{
    int c = 10;//不要返回局部变量的地址,编译器会自动开辟和释放
    return &c;
}

int main()
{
    int *p = fung();
    cout << *p << endl;
    return 0;
}

就像上面的代码这样就是错误的。他的结果是什么呢?

 

这是什么原因呢?

这是因为主函数外的函数体内的局部变量,编译器会自动开辟和释放,函数一结束,就会清空,所以无法打印,当然有些编译器会自动保留一次,但第二次就会清除

所以写代码的时候,不要返回局部变量的地址 。

http://www.dtcms.com/a/156753.html

相关文章:

  • Java24 抗量子加密:后量子时代的安全基石
  • 【MCP】了解远程MCP调用背后使用的SSE协议
  • 使用matplotlib绘制Raincloud图/云雨图/柱状图/小提琴图
  • 学习记录:DAY18
  • 图论---LCA(倍增法)
  • 使用 AFL++ 对 IoT 二进制文件进行模糊测试 - 第二部分
  • Spring Boot 3.4.5 运行环境需求
  • 精益数据分析(26/126):依据商业模式确定关键指标
  • Nginx性能优化:从配置到缓存,全面提升Web服务器性能
  • 重定向和语言级缓冲区【Linux操作系统】
  • RT-Thread学习笔记(四)
  • 【Android】四大组件之Service
  • MEME在线进行蛋白氨基酸序列的保守基序预测的具体分析步骤
  • SQL:MySQL 函数
  • 【生成式AI】从原理到实践的创造性革命
  • HackMyVM - Chromee靶机
  • 【Linux】web服务器的部署和优化
  • 嵌入式硬件开发工具---万用表---示波器---仿真器
  • Pygame物理模拟:实现重力、弹跳与简单物理引擎
  • 【Redis】基础2:作为缓存
  • Java在云计算、大数据、云原生下的应用和优势 - 面试实战
  • 【摩尔定律】
  • HTTP, AMQP, MQTT之间的区别和联系是什么?华为云如何适配?
  • 青少年CTF-贪吃蛇
  • Maven的聚合工程与继承
  • 机器学习:逻辑回归实现二元分类
  • Linux扩展
  • 开源AI智能名片链动2+1模式S2B2C商城小程序源码赋能下的社交电商创业者技能跃迁与价值重构
  • 毕业项目-基于java的入侵检测与防御系统
  • 联想笔记本电脑在Windows下通过联想驱动实现风扇控制