什么是C中的malloc()? (What is malloc() in C?)

malloc() is a library function that allows C to allocate memory dynamically from the heap. The heap is an area of memory where something is stored.

malloc()是一个库函数,它允许C从堆动态分配内存。 堆是存储内容的内存区域。

malloc() is part of stdlib.h and to be able to use it you need to use #include <stdlib.h>.

malloc()是stdlib.h的一部分,要使用它,您需要使用#include <stdlib.h>

如何使用Malloc (How to Use Malloc)

malloc() allocates memory of a requested size and returns a pointer to the beginning of the allocated block. To hold this returned pointer, we must create a variable. The pointer should be of same type used in the malloc statement.Here we’ll make a pointer to a soon-to-be array of ints

malloc()分配请求大小的内存,并返回指向已分配块开头的指针。 要保留此返回的指针,我们必须创建一个变量。 该指针应与malloc语句中使用的类型相同。在这里,我们将创建一个指向即将成为整数的数组的指针。

int* arrayPtr;

Unlike other languages, C does not know the data type it is allocating memory for; it needs to be told. Luckily, C has a function called sizeof() that we can use.

与其他语言不同,C不知道它为其分配内存的数据类型。 它需要被告知。 幸运的是,C有一个我们可以使用的名为sizeof()的函数。

arrayPtr = (int *)malloc(10 * sizeof(int));

This statement used malloc to set aside memory for an array of 10 integers. As sizes can change between computers, it’s important to use the sizeof() function to calculate the size on the current computer.

该语句使用malloc为10个整数的数组留出内存。 由于大小可以在计算机之间改变,因此使用sizeof()函数计算当前计算机上的大小非常重要。

Any memory allocated during the program’s execution will need to be freed before the program closes. To free memory, we can use the free() function

在程序关闭之前,必须先释放程序执行期间分配的所有内存。 要free内存,我们可以使用free()函数

free( arrayPtr );

This statement will deallocate the memory previously allocated. C does not come with a garbage collector like some other languages, such as Java. As a result, memory not properly freed will continue to be allocated after the program is closed.

该语句将取消分配先前分配的内存。 C没有像Java之类的其他语言那样带有garbage collector 。 因此,关闭程序后,将继续分配未正确释放的内存。

在继续之前... (Before you go on…)

回顾 (A Review)

  • Malloc is used for dynamic memory allocation and is useful when you don’t know the amount of memory needed during compile time.Malloc用于动态内存分配,当您在编译时不知道所需的内存量时很有用。
  • Allocating memory allows objects to exist beyond the scope of the current block.分配内存允许对象存在于当前块的范围之外。
  • C passes by value instead of reference. Using malloc to assign memory, and then pass the pointer to another function, is more efficient than having the function recreate the structure.C通过值而不是引用传递。 使用malloc分配内存,然后将指针传递给另一个函数,比让函数重新创建结构更有效。

有关C编程的更多信息: (More info on C Programming:)

  • The beginner's handbook for C programming

    C程序设计初学者手册

  • If...else statement in C explained

    如果...在C中的其他语句解释了

  • Ternary operator in C explained

    C中的三元运算符说明

翻译自: https://www.freecodecamp.org/news/malloc-in-c-dynamic-memory-allocation-in-c-explained/

C中的malloc:C中的动态内存分配相关推荐

  1. 动态内存分配(malloc)详解

    文章目录 malloc free ( ) calloc( ) 动态内存分配与变长数组 内存类与动态内存分配 malloc malloc()找到可用内存中一个大小适合的块. 内存是匿名的: 也就是说,m ...

  2. c语言malloc引用类型作参数,c语言中动态内存分配malloc只在堆中分配一片内存.doc...

    c语言中动态内存分配malloc只在堆中分配一片内存 .C语言中动态内存分配(malloc)只在堆中分配一片内存,返回一个void指针(分配失败则返回0),并没有创建一个对象.使用时需要强制转换成恰当 ...

  3. C++中的动态内存分配

    1.Cpp中的内存分配 了解动态内存在C++中是如何工作的是成为一名合格的C++程序员必不可少的.C++程序中的内存分为两个部分: 栈:在函数内部声明的所有变量都将占用栈内存. 堆:这是程序中未使用的 ...

  4. 【C语言进阶深度学习记录】三十三 C语言中动态内存分配

    如何在程序运行的时候动态给程序分配内存? 文章目录 1 动态内存分配的意义 1.1 C语言中如何动态申请内存空间 1.2 malloc和free的用法 1.3 calloc与realloc 1.31 ...

  5. C语言中动态内存分配的本质是什么?

    摘要:C语言中比较重要的就是指针,它可以用来链表操作,谈到链表,很多时候为此分配内存采用动态分配而不是静态分配. 本文分享自华为云社区<[云驻共创]C语言中动态内存分配的本质>,作者: G ...

  6. C++和C语言中的动态内存分配的区别

    在C语言和C++中都会用到动态内存的申请分配的问题,两者之间申请动态内存分配还是区别的. 在C++中的动态内存的分配 1.C++通过new关键字进行动态内存的分配.new关键字是C++内置的一个关键字 ...

  7. C语言中的动态内存分配

    大家好,今天简单讲一讲C语言中的动态内存分配. 补充:C程序中的内存块. 在C程序中,通常将内存划分为以下六个区域: (1)内核区域.这块区域是操作系统的,用户不能使用. (2)栈区.主要用于存放运行 ...

  8. 各种存储分配算法java代码实现_Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF...

    1 概述 本文是利用Java实现操作系统中的四种动态内存分配方式 ,分别是:BF NF WF FF 分两部分,第一部分是介绍四种分配方式的概念以及例子,第二部分是代码实现以及讲解. 2 四种分配方式 ...

  9. Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF

    1 概述 本文是利用Java实现操作系统中的四种动态内存分配方式 ,分别是: BF NF WF FF 分两部分,第一部分是介绍四种分配方式的概念以及例子,第二部分是代码实现以及讲解. 2 四种分配方式 ...

最新文章

  1. Java 8默认方法会破坏你的(用户的)代码
  2. 仟亿达2016年净利润2184万同比跌46%
  3. MathType公式保存后为什么字体会变化
  4. SharePoint Designer 2013 Workflow
  5. HJ37 统计每个月兔子的总数
  6. ADO.NET的记忆碎片(七)
  7. swift3.0 从相册选取或者拍照上传图片至阿里云OSS
  8. 《软件工程实践》第三次作业-原型设计(结对第一次)
  9. Win XP局域网设置及其无法访问解决方案
  10. git拉代码错误Can't update:no tracked branch
  11. Linux命令之last
  12. html中border的作用,border在html中是什么意思
  13. 签证官的心思你不懂,所以才会被拒签
  14. 计算机动漫游戏与制作,计算机动漫与游戏制作标准规范.doc
  15. ipa签名工具(IPA Resign Tool)在windows和macos系统下对苹果ipa文件一键重签名
  16. c语言怎么让电脑backspace,backspace键在哪里
  17. 猜拳游戏(基于TCP socket的编程)
  18. 345.反转字符串中的元音字母(Reverse Vowels of a String)
  19. 机器学习系列(一)—— 绪言
  20. 清理电脑C盘全攻略 - 是时候给你的系统盘放个假了!

热门文章

  1. hibernate的多表查询
  2. Django的model查询操作 与 查询性能优化
  3. overlay 如何实现跨主机通信?- 每天5分钟玩转 Docker 容器技术(52)
  4. 【用jQuery来判断浏览器的类型】及【javascript获取用户ip地址】
  5. 使用jquery解析xml
  6. Delphi 自带的 Base64 编解码函数
  7. 广州中山大道BRT不开“巨无霸”公交车
  8. ANTLR和StringTemplate
  9. linux 下mysql等php的安装 lnmp
  10. 如果你的电脑是通过代理上网的.就要用端口映射