当前位置: 首页 > news >正文

C++内存区堆和栈

    在C++中,内存分成5个区,堆、栈、自由存储区、全局/静态存储区和常量存储区。
    栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。
    堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。
    自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
    全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的(初始化的全局变量和静态变量在一块区域,未初始化的全局变量与静态变量在相邻的另一块区域,同时未被初始化的对象存储区可以通过void*来访问和操纵,程序结束后由系统自行释放),在C++里面没有这个区分了,他们共同占用同一块内存区。
    常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改。

#include <stdio.h>
#include <malloc.h> 
#include <string.h>int a = 0;//全局初始化区
char *p1;//全局未初始化区int main(void)
{int b;//栈char s[] = "abc";  //栈char*p2;//栈char*p3 = "123456";  //123456/0在常量区,p3在栈上。static int c=0;    //全局(静态)初始化区p1=(char*)malloc(10);p2=(char*)malloc(20); //分配得来得10和20字节的区域就在堆区。strcpy(p1,"123456"); //123456/0放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。return 0;
}

此程序来自网上;

http://www.lryc.cn/news/157093.html

相关文章:

  • QT中闹钟的设置
  • 【Redis】几款redis可视化工具(推荐Another Redis Desktop Manager)
  • 肖sir__设计测试用例方法之因果图07_(黑盒测试)
  • 李宏毅-21-hw3:对11种食物进行分类-CNN
  • 成集云 | 飞书审批同步金蝶云星空销售订单 | 解决方案
  • 06 科技英语|控制与优化学科词汇
  • 【网络教程】GitHub搜索技巧大揭秘
  • AUTOSAR LIN: LDF(LIN Description File)文件解析
  • Vue.js 报错:Cannot read property ‘validate‘ of undefined“
  • vue使用wangEditor
  • 网络编程、socket编程、多进程并发服务器
  • Elasticsearch:自动使用服务器时间设置日期字段并更新时区
  • 网络技术三:局域网基本原理
  • Fine-tuning Large Enterprise Language Models via Ontological Reasoning
  • 2023年全国职业院校技能大赛 高等职业教育组(信息安全管理与评估)正式赛题
  • 基于SSM的校园驿站管理系统
  • 分布式实时仿真系统-反射内存的应用
  • 【python技巧】替换文件中的某几行
  • 内网建自己的pip源
  • Vue 3的Diff算法相比Vue 2有哪些具体的改进?
  • 网络面试题整理
  • Liquid Studio 2023.2 Crack
  • 企业架构LNMP学习笔记8
  • 简单使用_matlab生成数据帧
  • uni-app语音转文字功能demo(同声传译)
  • vue2+element-ui批量导入方法并判断上传的文件是否为xls或xlsx
  • 【FPGA】通俗理解从VGA显示到HDMI显示
  • 【SpringMVC】参数传递与用户请求和响应
  • Android图形-Hardware Composer HAL
  • P1093 [NOIP2007 普及组] 奖学金