动态内存分配|学习笔记

简介: 快速学习动态内存分配

发者学堂课程【C语言学习教程动态内存分配】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/387/detail/4966


动态内存分配


内容

1.内存组织方式

2.内存分配方式及程序执行过程


一、内存组织方式

(1)内存分三个区  

1.代码区:存放代码

2.数据段 :存放程序员的数据,偏向生命周期长的 ,比如 常量; 静态局部变量;全局变量

3.堆区 :区域大 ,但分配效率较低,存在内存断点

4.栈区:由操作系统管理,内存小,但效率高


二、内存分配方式(程序执行过程)

1.编辑-》编译-》、运行(编译是将程序翻译成机器编码的过程,以便让计算机执行。

2静态内存分配:

(1)编译器在处理程序源代码时(编译)进行内存分配

动态内存分配,因而效率比较高,但是它缺少灵活性,要求在程序执行之前就知道所需内存的类型和数量

(2)静态对象的分配与释放由编译器自动处理

(3)动态对象的分配与释放,必须由程序员显示地管理程序执行(运行)时按动态要求进行内存分配

(4)C语言中动态内存分配就是使用-一个标准的库函数malloc在堆区中申请内存

(5)malloc 会自动在堆里寻找合适申请大小的内存区并返回

3.动态内存分配

//

//

main. C

//

动态内存分配

//

// Created by dancer on 16/8/3.

// Copyright ◎2016年NSObject. All rights reserved.

//

#include <stdio.h>

// malloc函数在这个头文件内声明

#include <stdlib. h>

int main(int argc, const char * argv[]) {

//动态分配4个字节,会把分配的内存首地址返回

//

( int*)malloc(4) ;

//分配一个整型变量

int* pInt = ( int*)malloc(sizeof(int));

//分配一 个字符变量

char* pCh = (char*)malloc(sizeof(char));

. //分配- -个字符数组

char* pArray = (char*) malloc(sizeof(char)*10) ;

//分配一个 double 类型的变量

double* pDouble = ( double*) malloc(sizeof(double)) ;

//动态内存的使用

*pInt = 9;

printf("*pInt = %d\n" , *pInt) ;

*pCh='A';

printf("*pChar = %c\n" ,*pCh) ;

for (int i=0;i<10; i++) {

pArray[i] = 'a'+i;

}

for (int i=0; i<10; i++) {

printf("*(pArray+%d)=%c\n" , i,*( pArray+i)) ;

}

*pDouble = 9.8;

pr intf ("*pDouble = %. 2f\n", *pDouble) ;

//释放内存(释放内存的使用权限)

f ree ( pDouble) ;

free( pInt) ;

f ree( pCh) ;

I

free(pArray) ;

// insert code here. . .

printf("Hello,World!\n") ;

return 0;

}

相关文章
【深入理解计算机系统】int 不是整数 | float 不是实数 | 内存引用错误的例子 | 学习笔记
【深入理解计算机系统】int 不是整数 | float 不是实数 | 内存引用错误的例子 | 学习笔记
282 0
|
存储 编译器 C语言
【C++】学习笔记——内存管理
【C++】学习笔记——内存管理
153 15
|
存储 缓存 Linux
计算机操作系统学习笔记(5)——内存管理
计算机操作系统学习笔记(5)——内存管理
212 0
|
存储 程序员 编译器
c++学习笔记08 内存分区、new和delete的用法
C++内存管理的学习笔记08,介绍了内存分区的概念,包括代码区、全局区、堆区和栈区,以及如何在堆区使用`new`和`delete`进行内存分配和释放。
179 0
|
存储 C++
C primer plus 学习笔记 第12章 存储类别、链接和内存管理
C primer plus 学习笔记 第12章 存储类别、链接和内存管理
136 2
|
存储 缓存 算法
十五、Linux性能优化实战学习笔记 - Linux内存是怎么工作的
内存管理也是操作系统最核心的功能之一。内存主要用来存储系统和应用程序的指令、数据、缓存等
501 1
|
NoSQL Redis
Redis学习笔记-内存碎片对性能的影响
Redis学习笔记-内存碎片对性能的影响
232 0
|
存储 并行计算 测试技术
【CUDA学习笔记】第五篇:内存以及案例解释(附案例代码下载方式)(二)
【CUDA学习笔记】第五篇:内存以及案例解释(附案例代码下载方式)(二)
347 0
【CUDA学习笔记】第五篇:内存以及案例解释(附案例代码下载方式)(二)
java202302java学习笔记第十天-数组的内存图1
java202302java学习笔记第十天-数组的内存图1
198 0
java202302java学习笔记第十天-数组的内存图1
java202302java学习笔记第六天-创建内存对象分析
java202302java学习笔记第六天-创建内存对象分析
217 0
java202302java学习笔记第六天-创建内存对象分析

热门文章

最新文章