首页 > 系统相关 >C++-内存四区

C++-内存四区

时间:2022-11-06 00:45:21浏览次数:54  
标签:栈区 常量 int 四区 局部变量 C++ 内存 new

内存四区:

1.代码区:

代码区:用来存放你写的代码的,只读和共享。

只读:意思是编译运行后不能操作,其目的是防止程序意外的修改了他的命令。

共享:共享的目的是对于频繁执行的程序,只需要在内存中有一份代码即可。

2.全局区:

全局变量和静态变量存放在此。 静态变量:static+普通变量=静态变量

全局区还包含了常量区字符串常量和其他常量也存放自此。常量:1.字符串常量2.const修饰的变量(1.const修饰的全局变量  2.const修饰的局部变量)

[一.不在全局区中:局部变量,局部常量\ 在全局区中:全局变量,静态变量,字符串常量,全局常量]

3.栈区:

由编译器自动分配释放,存放函数的参数值,局部变量。

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

局部变量存放在栈区,栈区的数据在函数执行完后自动释放。

(形参数据和局部变量放在栈上)

(第一次可以打印正确的始祖,是因为编译器做了保留)

4.堆区:

由程序员分配释放,若程序员不释放,程序结束时由操作系统回收。

在c++中主要利用new在堆区开辟内存。int*p=new int(10) 

 

 

 

 实质是在栈区定义了一个指针型的局部变量,指向了堆区的地址。

new运算符:

int*p=new int(10) ;开辟一个堆区的内存

delete p;释放new开辟的空间

利用new开辟数组

int* arr = new int [10];利用for循环来操控。

for(int i ;i<10;i++)

{

arr[i]=i+100

}

释放堆区的数组

delete[] arr;

释放数组的时候要加[]才可以。

 

标签:栈区,常量,int,四区,局部变量,C++,内存,new
From: https://www.cnblogs.com/030622zfy-/p/16861789.html

相关文章

  • C++PrimerPlus中文第六版第2章编程练习答案
    1、#include<iostream>usingnamespacestd;intmain(){cout<<"Name:Luoxiao,\nAddress:XidianUniversity,Xi'an,ShaanxiProvince,China.\n";retu......
  • 操作系统速成——3.内存管理
    三.内存管理引入目的:更好的支持多道程序的并发执行,提高系统性能主要功能:内存空间的分配与回收、存储的保护和共享、地址转换、内存扩充 存储的保护和共享就是说各道作......
  • C++对象模型:g++的实现(五)
    这篇博客来讲一下g++实现的C++对象模型中的虚函数的实现,包括:单一继承体系下的虚函数,多继承下的虚函数和虚继承下的虚函数。其中虚继承下的虚函数在《深度探索C++对象模型》......
  • C++构造函数初始化列表注意的坑
    原文链接:https://www.zhoubotong.site/post/87.html之所以写这篇文章,是觉得里面有些细节如果不注意,很容易出错或踩坑,网上有很多教程对这块的描述部分存在错误。希望下面......
  • Effective C++ - 条款13 - 以对象管理资源
    直接使用指针管理对象并不安全,因为可能忘记delete指针/delete语句并未按照预期执行而提前被exception中断了程序etcRAII观念:资源取得时机便是初始化时机.例如使用工厂......
  • Windows 下用 MinGW-64 配置 VScode 的 C/C++ 环境
    蒟蒻第一次发博客,轻喷~我在安装VScode的时候可谓历经磨难,所以就萌生出写这篇文章的想法。Windows下用MinGW-64配置VScode的C/C++环境一、下载MinGW-w64并添......
  • 三级指针动态分配/释放内存(C / C++)
    C语言版本#include<stdio.h>#include<stdlib.h>#definehigh2#definerow3#definecol4intmain(){inti,j,k;//p[2][3][4]int......
  • C++生成DLL给C#调用
    1、添加C++动态链接库(DLL)2、添加头文件test.h#ifndefTEST_H#defineTEST_H//添加要在此处预编译的标头#include"framework.h"#endif//TEST_Hextern"C"_......
  • C++——优先级队列(priority_queue)
    其为队列需要包含头文件#include,其与queue的不同之处在于,可以自定义数据的优先级,让优先级高的排在队列的前面,优先出队;优先队列具有队列的所有特性,包括基本操作,只是在此基......
  • Linux共享内存通信的C语言Demo代码
    重点注明:本文代码来源于:https://blog.csdn.net/github_38294679/article/details/122360026  =====================================================  使用p......