静态存储分配和动态存储分配
一、静态存储分配
通常定义变量或者对象,编译器在编译时都可以根据该变量或对象的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间,这种内存分配被称为静态存储分配。
二、动态存储分配
有些操作对象只有在程序运行时才能确定,这样编译器在编译时就无法为他们预定存储空间,只能在程序运行时,系统根据运行时的要求进行内存分配,这种方法称为动态内存分配。所有动态存储分配都在堆区中进行。
当程序运行到需要一个动态分配的变量或对象,必须向系统申请取得堆中的一块所需大小的存储空间,用于存储该变量或对象。当不再使用该变量或对象时,也就是它生命结束之时,要显式释放它所占用的存储空间,这样系统就能对该堆空间进行再分配,做到重复使用有限资源。
在C++中,申请和释放堆中分配的存储空间,分别使用new和delete的两个运算符来完成,使用格式如下:
指针变量名 = new 类型名(初始化式)
delete指针名
new运算符返回的是一个指向所分配类型变量(对象)的指针。对所创建的变量或对象,都是通过该指针来间接操作的,而动态创建的对象本身没有名字。
静态存储分配和动态存储分配相关推荐
- c语言如何存储已编译内容,二级C语言教程章节测试13.编译预处理和动态存储分配...
一.选择题 (1)有以下程序 main() { char p[]={'a', 'b', 'c'}, q[]="abc"; printf("%d %d\n", s ...
- 指针的形式与动态存储分配
来今天咱们今天先不讲题目和算法,我们先来讲一讲一个很重要的基础 第一个就是指针,这里就会有人会说了指针不就是字母前面加了个*号吗,有什么难的.嗯的确是在字母前加了个星号,但没弄懂确实特别难,但只要弄懂 ...
- C语言中动态内存分配的本质是什么?
摘要:C语言中比较重要的就是指针,它可以用来链表操作,谈到链表,很多时候为此分配内存采用动态分配而不是静态分配. 本文分享自华为云社区<[云驻共创]C语言中动态内存分配的本质>,作者: G ...
- 动态内存分配(详解)
动态内存分配 1.堆内存分配 : C/C++定义了4个内存区间:代码区,全局变量与静态变量区,局部变量区即栈区,动态存储区,即堆(heap)区或自由存储区(free store). 堆的概念: 通常定 ...
- 【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
- 各种存储分配算法java代码实现_Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF...
1 概述 本文是利用Java实现操作系统中的四种动态内存分配方式 ,分别是:BF NF WF FF 分两部分,第一部分是介绍四种分配方式的概念以及例子,第二部分是代码实现以及讲解. 2 四种分配方式 ...
- 【编译原理笔记15】运行存储分配概述,静态存储分配,栈式存储分配,调用序列和返回序列,非局部数据的访问,符号表,符号表建立
本次笔记内容: 7-1 运行存储分配概述 7-2 静态存储分配 7-3 栈式存储分配 7-4 调用序列和返回序列 7-5 非局部数据的访问 7-6 符号表 7-7 符号表建立 本节课幻灯片,见于我的 ...
- 编译原理(7):运行存储分配
声明:本系列文章,是根据中国大学MOOC网 哈工大的编译原理 这门课学习而成的学习笔记. 运行存储分配 一.运行存储分配概述 运行存储分配策略 编译器在工作过程中,必须为源程序中出现的一些数据对象分配 ...
- 【最新合集】编译原理习题(含答案)_15运行存储分配_MOOC慕课 哈工大陈鄞
[最新合集]MOOC哈工大陈鄞 编译原理答案全集-->传送门 运行存储分配 1 在目标代码生成阶段,符号表用于(). A. 目标代码生成 B. 语义检查 C. 语法检查 D. 地址分配 ...
- 动态内存分配与柔性数组
什么时动态内存分配 一般我们写程序都是在栈区分配空间,如果我们想根据需求想随时存放随时释放数据,堆区可以实现根据需求想系统申请所需大小的空间. 建立内存的动态分配 内存的动态分配是通过系统提供的函数来 ...
最新文章
- Unity3D第三人称摄像机控制脚本
- C语言中两种方式表示时间日期值time_t和struct tm类型的相互转换
- LoaderManager使用详解(三)---实现Loaders
- Flex 中取得当前服务IP地址
- Response内置对象
- Gartner最新数据报告 WP系统仅剩1%
- python可以计算复杂积分吗_python – Scipy:加快2D复数积分的计算
- 解决python中 .to_csv() 的乱码问题
- 开始我的.NET的学习旅程
- 再见了我热爱的ACM赛场
- wsdl2java 参数_wsdl2java参数详解
- 火狐浏览器Json插件(JSONView)
- Windows更改鼠标滚轮方向
- LED驱动程序的编写
- WPS格式文件转换图片格式如何实现
- Python glob()用法
- openwrt 处理间歇性无法上网(DNS故障)问题
- linux安装java视频_linux安装java(zz)
- 用opencv和vc++6.0开发的五子棋游戏软件
- GEE|下载研究区哨兵二号影像