[C++ 核心编程]笔记 2 栈区和堆区

embedded/2024/10/9 5:55:48/

栈区:

由编译器自动分配释放,存放函数的参数值,同部变量等
注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;//栈区数据注意事项  不要返回局部变量的地址
//栈区的数据由编译器管理开辟和释放int* func(int a)//形参数据也会放在栈区
{int a = 10;//局部变量 存放在栈区,栈区的数据在函数执行完后自动释放return &a;// 返回局部变量的地址}
int main() {//接受func函数的返回值int * p = func(1);cout << *p << endl;//第一次可以打印正确的数字, 是因为编译器做了保留(vs2022)cout << *p << endl;//第二次这个数据就不再保留了system("pause");return 0;
}

堆区:

由程序员分配释放,若程序员不释放,程序结束时由操作系统回收
在C++中主要利用new在堆区开辟内存

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;int * func()
{//利用new关键字   可以将数据开辟到堆区//指针 本质上也是局部变量, 放在栈上, 指针保存的数据是放在堆区int * p = new int(10);return p;
}
int main() {//在堆区开辟数据int* p = func();cout << *p << endl;cout << *p << endl;cout << *p << endl;cout << *p << endl;system("pause");return 0

运行结果如下:
在这里插入图片描述

可以看到,与堆区不同,栈区的数据不会自行释放内存(运行了四次数据仍然保持不变)

总结:

  1. 堆区数据由程序员管理开辟和释放
  2. 堆区数据利用new关键字进行开辟内存

http://www.ppmy.cn/embedded/124906.html

相关文章

Premiere Pro 3D空间报纸转场特效视频模板MOGRT

14种独特而时尚的Premiere Pro 3D报纸转场视频过渡模板mogrt&#xff0c;可轻松集成到Adobe Premiere Pro中&#xff0c;为您的视频提供新鲜动态的外观。这些过渡非常适合创建引人入胜的内容&#xff0c;如音乐视频、时尚视频和其他多媒体项目&#xff0c;其灵感来自报纸主题&a…

爬虫——XPath基本用法

第一章XML 一、xml简介 1.什么是XML&#xff1f; 1&#xff0c;XML指可扩展标记语言 2&#xff0c;XML是一种标记语言&#xff0c;类似于HTML 3&#xff0c;XML的设计宗旨是传输数据&#xff0c;而非显示数据 4&#xff0c;XML标签需要我们自己自定义 5&#xff0c;XML被…

软考系统分析师知识点五:数据通信与计算机网络

前言 今年报考了11月份的软考高级&#xff1a;系统分析师。 考试时间为&#xff1a;11月9日。 倒计时&#xff1a;32天。 目标&#xff1a;优先应试&#xff0c;其次学习&#xff0c;再次实践。 复习计划第一阶段&#xff1a;扫平基础知识点&#xff0c;仅抽取有用信息&am…

信息安全工程师(40)防火墙技术应用

一、防火墙的基本概念 防火墙是一种网络安全设备&#xff0c;用于监控和控制网络流量&#xff0c;以保护网络免受未经授权的访问和攻击。它可以是装配多张网卡的通用计算机&#xff0c;也可能是通用的物理设备。防火墙通过在网络之间设置访问控制策略&#xff0c;对进出的通信流…

云计算:MySQL

第一周第一天-MySQL的SQL语句解析 数据库的介绍 什么是数据库 数据库是存储和管理数据的系统或集合&#xff0c;通常用于支持软件系统的高效数据处理和查询。它能够以结构化的方式组织数据&#xff0c;使用户可以快速存储、更新、查询和删除数据。数据库不仅保存数据&#xff0…

OpenCV高级图形用户界面(2)关闭所有由 OpenCV 创建的窗口的函数destroyAllWindows()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::destroyAllWindows() 函数用于关闭所有由 OpenCV 创建的窗口。 函数原型 void cv::destroyAllWindows () 参数 此函数不接受任何参数 代…

深度扩展AntSK,让.NET Aspire助力您的AI项目

引言 在现今飞速发展的技术世界中&#xff0c;引用最新的工具和框架来提升项目的性能和可管理性至关重要。作为一名开发者&#xff0c;我最近在自己的AI知识库项目AntSK中集成了.NET Aspire&#xff0c;这为我的项目注入了新的活力。如果你还不清楚什么是.NET Aspire&#xff0…

【记录】Excel|Excel 打印成 PDF 页数太多怎么办

【记录】Excel&#xff5c;解决 Excel 打印成 PDF 页数过多的问题 文章目录 【记录】Excel&#xff5c;解决 Excel 打印成 PDF 页数过多的问题方法一&#xff1a;调整页边距WPS OfficeMicrosoft Excel 方法二&#xff1a;优化页面布局调整列宽和行高使用“页面布局”视图合并单…