C/C++程序的内存开辟

//———— C/C++程序的内存开辟
C++程序内存分配的几个区域:
//int t = 2;
//static int r = 1;
//void test()
//{
//    static e = 1;
//    int n = 1;
//    int arr[10] = {1,2,3,4};
//    char g[] = "hello world";
//    char* p = "abcd";
//    int* a = (int*)malloc(sizeof(int)* 4);//函数向内存申请一块连续可用的空间
//    int* b = (int*)calloc(4, sizeof(int));//为4个大小为 size(int)的元素开辟一块空间,
//    //并且把空间的每个字节初始化为0。
//    int* c = (b, sizeof(int) * 4);//把b调整为sizeof(int) * 4的一块空间的大小,灵活调整。
//    free(a);
//    free(c);
//}

//1.内核空间(此部分用户代码不能读写)
// 是计算机系统中的一个特定部分,负责执行最关键和最高优先级的任务,如操作系统内核、设备驱动程序等。
// 在操作系统中,内核空间是操作系统内核程序运行的地方,它具有最高的权限,可以直接访问和控制硬件资源。


//2. 栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结
//束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是
//分配的内存容量有限。 栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返
//回地址等。
//如上式代码中的:int n,char* p,free(a);(函数内部"="y右边的均存于栈区)

//3.内存映射段:mmap函数(文件映射、动态库、匿名映射)
//将内存地址映射到特定数据区域的机制。内存映射段允许程序员将某个内存区域映射到外部设备或内核空间,
// 以便在程序中读写数据


//4. 堆区(向上增长):一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。分
//配方式类似于链表。
//如上式代码中的:(int*)malloc(sizeof(int)* 4);(int*)callc(4, sizeof(int));(b, sizeof(int) * 4);


//5. 数据段(也是静态区)(static)存放全局变量、静态数据。程序结束后由系统释放。
//如上式代码中的:int t = 2;static int r = 1;static r=1;


//6. 代码段:存放函数体(类成员函数和全局函数)的二进制代码。
//代码段就是程序中用于实现特定功能的代码块。它们可以是简单的变量赋值、循环、条件判断,
//也可以是复杂的数据结构和方法。总之,代码段是C语言中组织和管理代码的基本单位。
//实际上普通的局部变量是在栈区分配空间的,栈区的特点是在上面创建的变量出了作用域就销毁。
//但是被static修饰的变量存放在数据段(静态区),数据段的特点是在上面创建的变量,直到程序
//结束才销毁,所以生命周期变长。、
//如上式代码中的:"hello world";"abcd";


// 类的成员函数:
// 是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。
// 类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员。

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

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

相关文章

美力AI变革:生成式AI在美妆和时尚领域的巨大改变

美妆AI技术解决方案提供商—玩美移动于今日发布最新全球趋势报告:《生成式AI在美妆和时尚领域的巨大改变》,就生成式AI在美妆和时尚行业的崛起,为品牌商提供了富有洞见的深入分析。该报告分析了来自玩美移动屡获殊荣的玩美系列APP应用套件的大…

文本单词查询复合表达式求值的实现案例分析

本文讨论的“文本单词查询复合表达式求值的实现”案例,来自C primer第四版,该案例面向对象编程和泛型编程,涉及类的继承、抽象、多态、句柄、标准IO库、容器、算法库,是综合性很强的程序 该程序实现文本中查找单个单词&#xff0c…

ELAU MC-4/11/22/400伺服驱动器

在一帧中每一行的选择时间是均等的。假设一帧的扫描行数为N,扫描时间为1,那一行所占有的选择时间为一帧时间的1/N。在液晶显示的驱动方法中把这个值,即一帧行扫描数的倒数称为液晶显示驱动的占空比(duty),用d表示。在同等电压下&a…

Error: start of central directory not found; zipfile corrupt.

【报错】使用 unzip 指令在 AutoDL 上解压 .zip 文件时遇到 Error: start of central directory not found; zipfile corrupt. 报错: 重新上传后还是解压失败排除了 .zip 文件上传中断的问题。 【原因】Windows 和 Linux 下的压缩文件的二进制格式有所不同&#x…

Python的内置函数 def __init__和__str__用法

__init__() 当使用类名()创建对象时,会自动执行以下操作 __init__()是对象的的内置方法,是专门用来定义一个类 具有哪些属性的方法 class Person:def __init__(self):print("这是一个初始化方法")result Person() …

SpringBoot使用过滤器进行接口签名防参数篡改

在Spring Boot中,可以使用过滤器(Filter)来实现接口签名验签。以下是一个简单的示例: 1. 首先,创建一个名为SignatureFilter的类,实现javax.servlet.Filter接口 import javax.servlet.*; import javax.se…

直接写一区! ZOA-PCNN-AT-SVM斑马优化并行卷积-支持向量机融合注意力机制的故障识别程序,特征可视化,实验多!图多!

适用平台:Matlab2023版本及以上 本原创程序提出的ZOA-PCNN-AT-SVM故障识别模型还没有人写!在此基础上进一步对参考模型进行多重改进,程序注释清晰,干货满满,下面对文章和程序做简要介绍! ①识别模型部分参…

模拟开关灯

1.  实验任务 如图所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。…

【mybatis-generator】mybatis代码生成器generator,生成文件名自定义配置

mybatis代码生成器generator, 生成文件名自定义配置 MyBatis-Generator 使用一. 引入依赖和相关插件二.设置配置文件三.运行四. mybatis-generator 自定义生成的文件名一.domainObjectName和mapperName属性二.domainObjectRenamingRule标签三. RenameExampleClassPlugin插件四.…

JUC之Phaser的使用

Phaser是并发包juc.concurrent包下的一个关于线程同步和线程通信的一个工具类,类似于CountDownLanch 和 CyclicBarrier,不同的是 Phaser可以用来根据步骤,等待线程按步骤同时触发执行。 package com.example.test;import com.example.abstra…

ubuntu20.04网络问题以及解决方案

1.网络图标消失,wired消失,ens33消失 参考:https://blog.51cto.com/u_204222/2465609 https://blog.csdn.net/qq_42265170/article/details/123640669 原始是在虚拟机中切换网络连接方式(桥接和NAT), 解决…

2024年1月6日~2024年1月12日周报

目录 一、前言 二、SeisInvNet-2020 三、RTM研究 四、遇到的问题及解决 4.1 KeyError: data 4.2 将mat文件转换为npy文件 五、小结 5.1 存在的问题及疑惑 5.2 下周安排 一、前言 本周的主要安排是阅读论文查看一些好的点子。 但是想法总是美好的,之前答应的…

图灵机:计算机科学的奠基之作

图灵机的概念由英国数学家阿兰图灵在1936年提出,这个时期正是计算机科学的黎明时分。那个时候,人们还在使用机械计算器进行计算,而且这些计算器的功能都非常有限。 图灵提出这个概念的初衷,是为了解决所谓的“判定问题”&#xf…

机器人持续学习基准LIBERO系列4——robosuite最基本demo

0.前置 机器人持续学习基准LIBERO系列1——基本介绍与安装测试机器人持续学习基准LIBERO系列2——路径与基准基本信息机器人持续学习基准LIBERO系列3——相机画面可视化及单步移动更新 1.robosuite的相关资料 是基于MuJoCo的机器人学习方针环境,提供一套基准环境…

蓝桥杯省赛无忧 竞赛常用库函数 课件5 排序

01 sort简介 02 sort的用法 sort(起始地址&#xff0c;结束地址的下一位,比较函数);默认用小于号#include<bits/stdc.h> using namespace std; int main(){int a[1000];int n;//读取数组大小cin>>n;//读取元素for(int i1;i<n;i)cin>>a[i];//对数组进行排…

vue3+vite+ts+pinia新建项目(略详细版)

1、新建项目 npm create vite@latest 2、安装依赖 yarn add vue-router yarn add -D @types/node vite-plugin-pages sass sass-loader 3、配置别名 //vite.config.ts import { defineConfig } from vite import path from node:path export default defineConfig({ plu…

如何有效提高矢量网络分析仪的动态范围

动态范围是网络分析仪&#xff08;VNA&#xff09;接收机的最大输入功率与最小可测量功率&#xff08;本底噪声&#xff09;之间的差值&#xff0c;如图所示&#xff0c;要使测量有效&#xff0c;输入信号必须在这些边界内。 如果需要测量信号幅度非常大的变化&#xff0c;例如…

openai自定义API操作 API (openai.custom):OpenAI API 实现电商平台的智能库存管理

在电商行业中&#xff0c;库存管理是至关重要的环节之一。一个高效的库存管理系统可以确保商品的正常供应&#xff0c;避免缺货或积压现象&#xff0c;从而提高销售效率和客户满意度。然而&#xff0c;传统的库存管理方式往往存在一些问题&#xff0c;如数据不准确、响应不及时…

版本控制系统教程

1.Git的基本介绍 1.1 Git的概念 Git是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目.Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件.Git与常用的版本控制工具CVS&#xff0c;Subversion等不同&#xff…

JavaWEB学习笔记 2024-1-10 --JavaScript

上一篇 文章目录 3.JavaScript3.1第一个JS程序3.2JS的引入方式3.3JS中函数定义3.4函数的触发3.5查看浏览器控制台输出3.6数据类型3.7变量3.8运算符3.9流程控制语句3.10JS中的异常处理 3.JavaScript 是由网景公司发布,最开始的名字为LiveScript,之后和sun公司合作,改名为JavaSc…