广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言如何实现动态内存的分配
  • 229
分享到

C语言如何实现动态内存的分配

2023-06-22 07:06:56 229人浏览 泡泡鱼
摘要

这篇文章给大家分享的是有关C语言如何实现动态内存的分配的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C 程序中,不同数据在内存中分配说明1)全局变量——内存中的静态存储区2

这篇文章给大家分享的是有关C语言如何实现动态内存的分配的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

C 程序中,不同数据在内存中分配说明

1)全局变量——内存中的静态存储区

2)非静态的局部变量——内存中的动态存储区——stack 栈

3)临时使用的数据—建立动态内存分配区域,需要时随时开辟,不需要时及时释放——heap 堆

4)根据需要向系统申请所需大小的空间,由于未在声明部分定义其为变量或者数组,不能通过变量名或者数组名 来引用这些数据,只能通过指针来引用)

C语言如何实现动态内存的分配

内存动态分配的相关函数

1)头文件#include 声明了四个关于内存动态分配的函数

2)函数原型 void * malloc(usigned int size) //memory allocation

  • 作用——在内存的动态存储区(堆区)中分配一个长度为 size 的连续空间。

  • 形参 size 的类型为无符号整型,函数返回值是所分配区域的第一个字节的地址,即此函数是一个指针型函数, 返回的指针指向该分配域的开头位置。

  • malloc(100); 开辟 100 字节的临时空间,返回值为其第一个字节的地址

3)函数原型void *calloc(unsigned n,unsigned size)

作用——在内存的动态存储区中分配 n 个长度为 size 的连续空间,这个空间一般比较大,足以保存一个数组用 calloc 函数可以为一维数组开辟动态存储空间,n 为数组元素个数,每个元素长度为 size.函数返回指向所分配域的起始位置的指针;分配不成功,返回 NULL。p = calloc(50, 4); //开辟 50*4 个字节临时空间,把起始地址分配给指针变量 p

4)函数原型:void free(void *p)

作用——释放变量 p 所指向的动态空间,使这部分空间能重新被其他变量使用。p 是最近一次调用 calloc 或 malloc 函数时的函数返回值free 函数无返回值free (p ); // 释放 p 所指向的已分配的动态空间

5) 函数原型void *realloc(void *p,unsigned int size)

作用——重新分配 malloc 或 calloc 函数获得的动态空间大小,将 p 指向的动态空间大小改变为 size,p 的值不 变,分配失败返回 NULLrealloc(p, 50); // 将 p 所指向的已分配的动态空间 改为 50 字节

6)返回类型说明
 

C语言如何实现动态内存的分配

C语言如何实现动态内存的分配

C语言如何实现动态内存的分配

应用实例

动态创建数组,输入 5 个学生的成绩,另外一个函数检测成绩低于 60 分的,输出不合格的成绩。

代码演示

#include <stdlib.h>#include <stdio.h>int main() {void check(int *);int * p,i; // 在堆区开辟一个 5 * 4 的空间,并将地址 (void *) , 转成 (int *) , 赋给 pp = (int *)malloc(5*sizeof(int));for( i = 0; i < 5; i++) {scanf("%d", p + i);}check(p); //free(p); //销毁 堆区 p 指向的空间 getchar(); getchar();return 0;}void check(int *p) {int i;printf("\n不及格的成绩 有: ");for(i =0; i < 5; i++) {if(p[i] < 60) {printf(" %d ", p[i]);}}}

动态分配内存的基本原则

1)避免分配大量的小内存块。分配堆上的内存有一些系统开销,所以分配许多小的内存块比分配几个大内存块的 系统开销大

2)仅在需要时分配内存。只要使用完堆上的内存块,就需要及时释放它(如果使用动态分配内存,需要遵守原则: 谁分配,谁释放), 否则可能出现内存泄漏

3)总是确保释放以分配的内存。在编写分配内存的代码时,就要确定在代码的什么地方释放内存

4)在释放内存之前,确保不会无意中覆盖堆上已分配的内存地址,否则程序就会出现内存泄漏。在循环中分配内 存时,要特别小心

5)指针使用一览

C语言如何实现动态内存的分配

感谢各位的阅读!关于“C语言如何实现动态内存的分配”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: C语言如何实现动态内存的分配

本文链接: https://www.lsjlt.com/news/303291.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言如何实现动态内存分配
    今天小编给大家分享一下C语言如何实现动态内存分配的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。C语言动态内存分配的详解1.为...
    99+
    2023-06-16
  • C语言如何实现动态内存的分配
    这篇文章给大家分享的是有关C语言如何实现动态内存的分配的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C 程序中,不同数据在内存中分配说明1)全局变量&mdash;&mdash;内存中的静态存储区2...
    99+
    2023-06-22
  • C语言的动态内存如何分配
    今天小编给大家分享一下C语言的动态内存如何分配的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。动态内存分配的定义首先我们要搞清...
    99+
    2023-07-02
  • C语言动态内存分配函数的实现
     在C中我们开辟内存空间有两种方式 : 1.静态开辟内存 :例如: int a;int b[10];  这种开辟内存空间的特点是 所开辟的内存是在栈中开...
    99+
    2022-11-12
  • C语言的动态内存分配及动态内存分配函数详解
    目录mallocmalloc的使用:freecalloccalloc的使用:reallocrealloc的使用改进:realloc的另一种用法:常见的动态内存错误对空指针的解引用操作...
    99+
    2022-11-13
  • 详解C语言动态内存的分配
    目录C 程序中,不同数据在内存中分配说明内存动态分配的相关函数应用实例动态分配内存的基本原则总结C 程序中,不同数据在内存中分配说明 1)全局变量——内存中的...
    99+
    2022-11-12
  • C语言中的动态内存分配实例分析
    本篇内容主要讲解“C语言中的动态内存分配实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言中的动态内存分配实例分析”吧!什么是动态内存分配我们目前已经知道的内存开辟的方式有:int&n...
    99+
    2023-07-02
  • C语言动态内存的分配实例详解
    目录前言动态内存分配的定义动态内存的优势<1>  可以控制内存的大小<2> 可以多次利用这部分空间<3>不占用栈区的内存malloc c...
    99+
    2022-11-13
  • AndroidNDK开发(C语言--动态内存分配)
    1.C 内存管理函数 C 语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。 ...
    99+
    2022-11-12
  • C语言动态内存分配函数如何使用
    这篇文章主要介绍“C语言动态内存分配函数如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言动态内存分配函数如何使用”文章能帮助大家解决问题。局部变量和函数的形参向栈区申请空间全局变量和st...
    99+
    2023-06-30
  • C语言动态内存的分配最全面分析
    目录为什么有动态内存分布malloc函数的使用free函数的用法calloc的用法realloc的使用方法柔性数组为什么有动态内存分布 大家发现一个问题没有,就是我们之前写代码创建数...
    99+
    2022-11-13
  • C语言动态内存分配图文讲解
    目录思维导图1.为什么存在动态内存分配2.动态内存函数的介绍2.1 malloc2.2 free2.3 calloc2.4 realloc3.常见的动态内存错误思维导图 1.为什么...
    99+
    2023-01-17
    C语言动态内存分配 C语言动态内存分配函数
  • C语言动态内存分配怎么使用
    这篇文章主要介绍了C语言动态内存分配怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言动态内存分配怎么使用文章都会有所收获,下面我们一起来看看吧。一、动态内存分配的意义C语言中的一切操作都是基于内存的...
    99+
    2023-06-30
  • C语言中关于动态内存分配的详解
    目录一、malloc 与free函数二、calloc三、realloc四、常见的动态内存的错误【C语言】动态内存分配 本期,我们将讲解malloc、calloc、realloc以及f...
    99+
    2022-11-12
  • 深入了解C语言中的动态内存分配
    目录什么是动态内存分配如何进行动态内存分配首先我要介绍两个函数 malloc 和 free第二个开辟空间的动态内存分配的函数 calloc大小修改函数realloc今天我们来学习一下...
    99+
    2022-11-13
  • C语言动态内存管理的实现
    目录1. 摘要2. 为什么存在动态内存管理3. 动态内存函数3.1 malloc3.2 free3.3 calloc3.4 realloc4. 常见的动态内存错误5. 几个经典笔试题...
    99+
    2022-11-12
  • C语言编程C++动态内存分配示例讲解
    目录动态内存管理为什么存在动态内存分配动态内存函数的介绍malloc申请空间和free释放空间有借有还 free释放内存calloc申请内存realloc调整动态内存的大小reall...
    99+
    2022-11-12
  • C语言深入探索动态内存分配的使用
    目录一、动态内存分配的意义二、malloc 和 free三、关于 malloc(0)四、calloc 和 realloc五、小结一、动态内存分配的意义 C语言中的一切操作都是基于内存...
    99+
    2022-11-13
  • C语言中动态内存管理实例分析
    今天小编给大家分享一下C语言中动态内存管理实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.动态内存开辟的原因常见的...
    99+
    2023-07-02
  • C语言中动态内存的示例分析
    这篇文章主要为大家展示了“C语言中动态内存的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言中动态内存的示例分析”这篇文章吧。1.关于动态内存的函数1.1 malloc和free函数...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作