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

内存四区(栈)

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

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

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

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.xdnf.cn/news/2166.html

相关文章:

  • 深入理解N皇后问题:从DFS到对角线优化
  • 深入剖析 TypeScript 基础类型:string、number、boolean 的声明与使用
  • 神经网络笔记 - 感知机
  • 常用财务分析指标列表
  • JAVA后端开发常用的LINUX命令总结
  • 高精度3D圆弧拟合 (C++)
  • Dijkstra算法对比图神经网络(GNN)
  • c++_csp-j算法 (5)
  • 系统架构设计(三):质量属性
  • 安全生产知识竞赛宣传口号160句
  • Java面向对象(OOP)终极指南:从基础到高级应用
  • OSPF的不规则区域和特殊区域
  • Spring 声明配置类:@Configuration
  • 基于Python+Neo4j实现新冠信息挖掘系统
  • 力扣面试150题--合并两个有序链表和随机链表的复制
  • BT152-ASEMI机器人率器件专用BT152
  • TEC制冷片详解(STM32)
  • 电机试验平台:实现精准测试与优化设计
  • 【开源飞控】调试
  • 统计定界子数组的数组
  • 下垂控制属于构网型控制技术
  • pytest 技术总结
  • CCF CSP 第30次(2023.05)(4_电力网络_C++)
  • Fedora 43 计划移除所有 GNOME X11 相关软件包
  • Android 13 接入 MediaSession 详细文档
  • 机器学习——朴素贝叶斯法运用
  • 网络攻防第一~四集
  • T型三电平逆变器的SPWM线电压 线与中点电压有几种电平
  • 关闭网桥的STP,解决RHEL10上qemu使用u-boot加载uImage自动加载失败的问题
  • 驱动汽车供应链数字化转型的标杆解决方案:全星研发项目管理APQP软件系统: