首页 > 编程语言 >c++ 自由储存区和堆

c++ 自由储存区和堆

时间:2023-05-02 21:12:50浏览次数:57  
标签:存储 C++ 自由 c++ malloc 内存 new 储存区

在C++中,内存区分为5个区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区

谈到自由存储区与堆的区别,就需要了解new与malloc的区别。

实际上堆是C语言的关键术语,是操作系统所维护的一块特殊内存,它提供了动态分配的功能。用户使用malloc进行堆内存申请,使用free实现堆内存的释放。

但自由存储区不同,它是C++中的一个抽象的概念。C++中规定使用new/delete申请和释放的的区域被称为自由存储区。因此,自由存储区的实际位置和new/delete申请/释放的位置有关。大部分编译器中new申请空间都是由malloc实现,默认是在堆上实现自由存储。但是用户也可以通过重载new在其他内存区域(例如全局区)实现数据的自由存储,此区域也将成为自由存储区。

总结,自由存储区不等于堆区,堆是操作系统所维护的一块特殊内存,自由存储区是一种抽象概念,使用new/delete申请和释放的的区域都被称为自由存储区


转载文章:https://blog.csdn.net/great_emperor_/article/details/123261184

标签:存储,C++,自由,c++,malloc,内存,new,储存区
From: https://www.cnblogs.com/Explosion556/p/17368264.html

相关文章

  • 【C++】设立一组状态,在程序运行过程中设置对象的某个状态,检查对象是否满足所有的状态
    `#include//定义状态枚举enumState{STATE_A=1<<0,//0001STATE_B=1<<1,//0010STATE_C=1<<2//0100};classMyClass{private:intcurrentState;public:MyClass():currentState(0){}//设置状态voidsetState(Statestate){......
  • vcpkg:一站式C++库管理,简化工作流程
    简介vcpkg是一个用于在Windows系统上管理C++库的开源工具。它允许开发人员通过简单的命令行界面安装、管理和卸载各种C++库,并自动解决它们的依赖关系。vcpkg拥有一个庞大的库集合,包括Boost、OpenCV、Qt、SDL2等等,而且不仅限于Windows平台,还支持在Linux和macOS上进行交叉编译。......
  • C++文件读写常用操作整理
    C++对于文件的操作需要包含<fstream>头文件文件类型分为两种:文本文件-文件以文件的ASCII码的形式存储在计算机中二进制文件-文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream:读操作fstream:读写操作一、文......
  • C++杂谈:STL
    五一快乐。终于有时间整理一点东西了,笔者这个五一过得是相当初生。大部分人都玩去了,只有我还在赶ddl的世界达成了qwq。不过我觉得还是做了自己想做的事情的。稍微记录一些前段时间OOP遇到的STL里面乱七八糟的东西。STL的一些底层实现vector这个谁都知道,是一个堆上分配的数组,......
  • c++ 调用函数,编译器查找函数过程
    假设此处调用函数 inta=1;floatb=1.0;func(a,b);//调用函数若func为非模板函数,编译器查找所有的名称为func的函数,然后检查函数入参的数量,再然后检查每个入参是否都可以转换到目标类型。(此处注意,如果参数类型为类对象,若该类支持隐式转换,那么会出现如下情况:classT......
  • c++回调函数
    回调函数本质上也是普通函数,只是调用机制有所区别——首先通过传参的形式将该函数的地址传递给其他函数,然后在其他函数中通过函数指针调用该函数。在其他函数中通过函数指针调用该函数的过程称为回调,而作为被调用的该函数则被称为回调函数。为什么需要回调函数?满足接口兼容性回......
  • 10分钟搞定!C++类中构造函数和析构函数的完全指南
    一、初步认识构造函数1.什么是构造函数?要了解构造函数就要先了解一下,类的6个默认成员函数,如下图:构造函数:构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证每个数据成员都有一个合适的初始值,并且在对象整个生命周期内只调用一次。通俗一点来......
  • 【c++】libtorch和qt和opencv部署
    https://blog.csdn.net/rglkt/article/details/125508634opencv和libtorch的兼容问题,只需要下载(cxx11ABI)即可关于slot报错问题:引入torch文件时使用这种办法#undefslots#include<torch/torch.h>#include<torch/script.h>#defineslotsQ_SLOTS命名空间的问题参......
  • 用C/C++在Linux和Android NDK中获取设备的IP地址
    C/C++开发的获取设备IP地址的代码,下面链接中的版本是在Linuxx86-64环境中编译(Centos7.5)的,也可在其它版本的Linux中或者AndroidNDK('armeabi-v7a','arm64-v8a','x86','x86_64'等版本)中编译。下载地址(此版本须在Linuxx86-64环境中运行):金山文档https://kdocs.cn/l/cd4VM3e......
  • C/C++《程序设计基础II》[2023-04-30]
    C/C++《程序设计基础II》[2023-04-30]2022级计算机专业《程序设计基础II》小组项目作业作业要求:1.分小组完成,2-4人一组(每个题目后面有人数要求,见附件1);2.任课老师按小组分配任务;3.作业时长为1周;4.提交内容为:WORD文档,内容包括:题目内容、算法分析、代码实现(要求加注释)、运行结......