C++(程序的内存分区)

程序的内存分区模型

C++程序在执行时,将内存划分为4个区域

1.代码区:存放函数的二进制代码,由操作系统进行管理

2.全局区:存放全局变量和静态变量以及常量

3.栈区:由编译器自动分配释放,存放函数的参数值,局部变量等

4.堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收

分区的意义:赋予不同的生命周期,给我们更大的灵活编程。

1.代码区

是存放CPU执行的机器指令

代码区是共享的

代码区是只读的

2.全局区 

该区域的数据在程序结束后由操作系统释放

3.栈区 

不要返回局部变量的地址,栈区开辟的数据由编译器自动释放

 4.堆区

在C++中主要利用new在堆区开辟内存

#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;
}

5.new操作符

#include<iostream>
using namespace std;//1.new的基本用法
int* func() {//利用new关键字可以将数据开辟到堆区//new返回的是该数据类型的指针int* p = new int(10);return p;
}void test01() {int* p = func();cout << *p << endl;cout << *p << endl;cout << *p << endl;//堆区的数据由程序员管理开辟和释放//释放堆区数据,使用关键字deletedelete p;
}//2.在堆区中利用new创建数组
void test02() {int* arr = new int[10];for (int i = 0; i < 10; i++) {arr[i] = i + 100;}for (int i = 0; i < 10; i++) {cout << arr[i] << endl;}//释放堆区数组//释放数组的时候,要加[]才可以delete[] arr;
}int main() {test01();test02();
}
10
10
10
100
101
102
103
104
105
106
107
108
109

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/669689.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过Nginx转发admin连接licloud-api-develop接口

1.需求配置 在本地环境部署一套开发环境&#xff0c;方便开发金磊调试功能 所使用到的服务有nginx&#xff0c;mysql&#xff0c;rabbitmq&#xff0c;redis&#xff0c;docker 服务安装网上都有教程这里就不一一列举出来了&#xff0c;服务都配置好之后 开始组建开发环境 2…

图像处理(二)

图像处理&#xff08;2&#xff09; 裁剪图片 from skimage import io,dataiimg io.imread(rD:\工坊\图像处理\十个勤天2.png)roiiimg[50:150,120:200,:]io.imshow(roi) 运行结果&#xff1a; 将图片进行二值化 from skimage import io,data,colorimg io.imread(r"…

数据分析:转录本ID和基因ID转换

前言 在使用kallisto等基于cDNA数据库注释软件时&#xff0c;获得的gene expression matrix的gene id是transcript id。后续在做数据分析时&#xff0c;需要将其转换成gene symbol。以下介绍两种转换方法。 第一种方法 在GitHub上有人开发了可以做该种转换的R包&#xff0c;…

启航新篇,量算未来 | 量子计算创新论坛成功举办!

4月28日下午&#xff0c;在2024中国移动算力网络大会——未来启航•量子计算创新论坛在苏州金鸡湖国际会议中心举办。本次论坛以“创新求发展&#xff0c;合作赢未来”为主题&#xff0c;旨在汇聚行业前沿思想&#xff0c;共谋创新发展大计&#xff0c;共同推动我国量子计算产业…

网络性能测试工具iperf3 和iperf

目录 1. iperf工具介绍 2. 下载安装 3. 使用方法 1. iperf工具介绍 iperf 是一个网络性能测试工具&#xff0c;用于测量网络带宽和性能。它可以在客户端和服务器之间进行数据传输&#xff0c;并提供了丰富的选项来配置测试参数和输出格式。 iperf 和 iperf3 都是用于测量网…

多链路聚合设备是什么

多链路聚合设备属于通信指挥装备。 乾元通多链路聚合设备&#xff0c;它能够将多个网络链路聚合成一个逻辑链路&#xff0c;以实现高速、稳定、可靠的数据传输。多链路聚合设备的核心技术包括链路聚合、负载均衡、故障切换等&#xff0c;能够智能管理和优化利用不同网络链路&a…

sql编写规范(word原件)

编写本文档的目的是保证在开发过程中产出高效、格式统一、易阅读、易维护的SQL代码。 1 编写目的 2 SQL书写规范 3 SQL编写原则 软件全套资料获取进主页或者本文末个人名片直接获取。

Inflate动态Huffman解压缩

上个已经实现GZIP压缩文件格式的Inflate静态Huffman解压&#xff0c;这个实现Inflate的无压缩输出和动态Huffman解压。 Java语言实现&#xff0c;Eclipse下编写。 范式Huffman解码实现&#xff0c;输入huffman编码&#xff0c;输出原始数据 // 范式huffman解码static class C…

视频号小店有自然/搜索流量吗?

我是王路飞。 视频号小店不过就是腾讯版的“抖音小店”。 本质都是借助短视频的流量红利&#xff0c;进行电商变现。 所以&#xff0c;在视频号开店&#xff0c;依旧是“无货源模式”“找达人带货玩法”。 至于自然/搜索流量&#xff0c;现阶段的视频号小店几乎是没有的&am…

27 JavaScript学习:异步编程

异步的概念 在JavaScript中&#xff0c;异步编程是一项重要的概念&#xff0c;特别在处理用户交互、网络请求和文件读写等场景下非常常见。JavaScript是一门单线程语言&#xff0c;因此需要通过异步编程来避免阻塞主线程&#xff0c;保证程序的流畅性和响应性。 在JavaScrip…

PDF到TXT:一键解锁文本魅力,轻松实现格式转换!

PDF文件以其独特的跨平台、易阅读性受到了广大用户的青睐。但是&#xff0c;有时我们也需要将PDF文件转换为其他格式&#xff0c;以满足不同的需求。比如&#xff0c;有时候我们需要将PDF文件转换为TXT格式&#xff0c;以便在移动设备上轻松阅读或进行文本编辑。这时&#xff0…

3.ERC4626

ERC4626是一个vault&#xff0c;在DAI中&#xff0c;使用ETH换取DAI。其流程为先充值ETH到maker vault。 Vault 资产的管理、分红用户充值某项资产获取某个凭证该凭证作为分红、推出的依据Yield Farming/借贷/质押等 以太坊改进提案EIP:ethereum improvemwnt proposal 最初E…