Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >7.7 动态内存分配与指向它的指针变量

7.7 动态内存分配与指向它的指针变量

作者头像
小林C语言
发布于 2019-08-09 06:39:45
发布于 2019-08-09 06:39:45
7650
举报

一、什么是内存的动态分配

全局变量是分配在内存中的静态存储区的,非静态的局部变量是分配在内存中的动态存储区的,这个存储区称为“栈”。

C语言中允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放。这些数据是临时存放在一个特别的自由存储区称为“堆”

二、怎样建立内存的动态分配

(1)malloc函数

函数原型

void *malloc(unsigned int size);

作用:是在内存的动态存储区分配一个长度为size的连续空间

注意:形参的类型定义为无符号整型(不允许为负数)

(2)calloc函数

函数原型

void *calloc(unsigned n,unsigned size);

作用:在内存的动态存储区分配n个长度为size的连续空间,这个空间一般比较大

(3)free函数

函数原型

void free(void *p);

作用:释放指针变量p所指向的动态空间,使这部分空间能重新被其他变量使用

(4)realloc函数

函数原型

void *realloc(void *p,unsigned int size);

作用:重新分配动态空间大小

三、void指针类型

C99允许使用基类型为void的指针类型

注意:不要把指向void类型理解为指向任何的类型,而应理解为指向空类型或不确定向类型

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
8.7 C语言动态内存分配与指向它的指针变量
1、全局变量是分配在内存中的静态存储区的,非静态的局部变量(包括形参)是分配在内存中的动态存储区的,这个存储区是一个“栈”的区域。
小林C语言
2020/12/08
1.3K0
8.7 C语言动态内存分配与指向它的指针变量
动态内存分配(malloc和free​、calloc和realloc​)
但是上述的开辟空间的方式有两个特点: • 空间开辟大小是固定的。 • 数组在申明的时候,必须指定数组的长度,数组空间一旦确定了大小不能调整
走在努力路上的自己
2024/01/26
6960
动态内存分配(malloc和free​、calloc和realloc​)
C语言 | 动态内存分配
在C语言中,全局变量是分配在内存中的静态存储区的,非静态的局部变量,包括形参是分配在内存中的动态存储区的,这个存储区是一个“栈”的区域。
小林C语言
2021/04/28
2.2K0
C语言 | 动态内存分配
C语言从入门到实战——动态内存管理
在C语言中,动态内存管理是指程序运行时,通过调用特定的函数动态地分配和释放内存空间。动态内存管理允许程序在运行时根据实际需要来分配内存,避免了静态内存分配在编译时就确定固定大小的限制。
鲜于言悠
2024/03/20
3730
C语言从入门到实战——动态内存管理
C语言——指针(进阶版)
3.指针是有类型丶指针的类型决定了指针的+-整数的步长,指针解引用操作的时候的权限
王同学要努力
2022/12/20
4670
C语言——指针(进阶版)
【C语言】动态内存管理(heap)
4.补充:C语言是可以创建变长数组的(也就是柔性数组),c99增加了这种语法标准,但现在还是有许多的编译器不支持这种标准
举杯邀明月
2023/04/12
7890
【C语言】动态内存管理(heap)
【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )
程序运行后的内存布局 : 从高地址 到 低地址 介绍, 顺序为 栈 -> 堆 -> bss段 -> data 段 -> text段 ;
韩曙亮
2023/03/27
2K0
【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )
【C语言动态内存管理】—— 智能分配与精准释放之道,打造高效内存循环
在之前的学习中我们已经学会了内存开辟的方式,如定义变量或者定义数组都会在栈上开辟空间,申请内存!
换一颗红豆
2024/12/20
1K0
【C语言动态内存管理】—— 智能分配与精准释放之道,打造高效内存循环
动态内存管理
但是上述的开辟空间的方式有两个特点: 1. 空间开辟大小是固定的。 2. 数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。
绝活蛋炒饭
2024/12/16
1320
动态内存管理
动态内存空间分配
动态内存空间分配是指,在程序运行期间,根据实际需要向系统申请一定大小的内存空间,使用指针变量存储这块内存空间的地址,通过指针变量访问内存空间中的数据。变量使用完成后,要将动态申请到的内存空间归还给系统。
pigeon
2022/04/11
7100
动态内存空间分配
深入挖掘C语言 ----动态内存分配
C语言提供了另外一个函数free, 专门是用来做动态内存释放和回收的, 函数原型如下:
用户11317877
2024/10/16
1370
深入挖掘C语言 ----动态内存分配
动态内存管理
这个函数向内存的堆区申请一块指定大小的连续可用空间,并返回指向这块空间的指针。 a.如果开辟成功,则返回一个指向开辟好空间的指针。 b.如果开辟失败,则返回一个空指针,因此malloc的返回值一定要做检查。 c.函数的返回值是void *,所以malloc函数并不知道开辟空间的类型,具体使用时自己指定。 d.如果size是0的话,malloc的行为是C语言标准未定义的,取决于编译器。
啊QQQQQ
2024/11/19
800
动态内存管理
抽丝剥茧C语言(高阶)动态内存管理+练习
但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译时开辟空间的方式就不能满足了。 这时候就只能试试动态存开辟了。
有礼貌的灰绅士
2023/03/28
4290
抽丝剥茧C语言(高阶)动态内存管理+练习
c语言进阶部分详解(详细解析动态内存管理)
上篇文章介绍了枚举,联合相关的内容,大家可以点击链接进行浏览:c语言进阶部分详解(详细解析自定义类型——枚举,联合(共用体))-CSDN博客
是Nero哦
2024/01/18
1570
c语言进阶部分详解(详细解析动态内存管理)
C语言重点突破(五) 动态内存管理
动态内存管理是指在一个程序运行期间动态地分配、释放和管理内存空间的过程。在应用程序中,当程序需要使用变量或对象时,需要在内存中分配一段空间,并在使用完毕后释放该空间,以提高程序的效率和性能。本文意在介绍常用动态内存函数以及如何使用它们来进行动态内存分配。
对编程一片赤诚的小吴
2024/01/23
3240
C语言重点突破(五) 动态内存管理
深入探索C语言动态内存分配:释放你的程序潜力
如果我们要用这个数组来存储数据的话只能存储100个char型的数据,如果再想要往数组内添加数据的话就会越界。
DevKevin
2024/03/24
2420
探索动态内存开辟的奥秘
有时候我们需要的空间⼤⼩在程序运⾏的时候才能知 道,那数组的编译时开辟空间的⽅式就不能满⾜了。因此,C语⾔引⼊了动态内存开辟,让程序员⾃⼰可以申请和释放空间,就⽐较灵活了。
秋邱
2024/10/09
1390
探索动态内存开辟的奥秘
C语言 动态内存分配
动态内存分配涉及到堆栈的概念:堆栈是两种数据结构。堆栈都是数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。 栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。 在C语言中,全局变量分配在内存中的静态存储区,非静态的局部变量(包括形参)是分配在内存的动态存储区,该存储区被称为栈。除此之外,C语言还允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要是随时释放。这些诗句临时存在一个特别的自由存储区,称为堆区。 系统提供了四个库函数来实现内存的动态分配: (1)malloc(size) 在内存的动态存储区中分配一个长度为size的连续空间。 (2)calloc(n,size) 在内存的动态存储区中分配n个长度为size的连续空间。 (3)free§ 释放指针变量p做指向的动态空间。 (4)realloc(p,size) 将指针变量p指向的动态空间大小改变为size。 举个栗子:
chaibubble
2022/05/07
1.2K0
C语言:动态内存分配+经典面试题
前言: 通常,我们在栈空间开辟的内存都是固定的,这是十分不方便使用的。为了更加灵活的分配和使用内存,我们要学习C语言中一些常用的与内存分配相关联的函数。顺便,我们会补充数组中柔性数组的知识。 内存分区模型: 本期内容,就是学习动态内存分配,着手堆区的使用。下面进入正文部分。 ---- 动态内存函数 包含头文件 <stdlib.h> 🪂1、malloc 作用:这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。 🛸🛸格式:malloc(size_t size); 🎄🎄如果开辟成
青衫哥
2023/03/31
8410
C语言:动态内存分配+经典面试题
【动态内存管理】
我们发现,开辟之后,新开辟的ptr的地址与p的地址相同,这就是情况1。 当然,情况2也是有可能的,我们把原有的变成4000,开辟的变成8000,,即我们申请的空间变大时:
每天都要进步呀
2023/03/28
5660
【动态内存管理】
推荐阅读
相关推荐
8.7 C语言动态内存分配与指向它的指针变量
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档