freeCodeCamp/guide/chinese/c/malloc/index.md

42 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: malloc
localeTitle: 的malloc
---
# C中的malloc
malloc是一个库函数它允许C从堆中动态分配内存。堆是存储某些内容的内存区域。
malloc是stdlib.h的一部分为了能够使用它你需要使用`#include <stdlib.h>` 。
## 使用Malloc
malloc分配所请求大小的内存并返回指向已分配块开头的指针。要保存此返回的指针我们必须创建一个变量。指针应与malloc语句中使用的类型相同。
在这里我们将指向即将出现的一组int
```C
int* arrayPtr;
```
与其他语言不同C不知道它为内存分配的数据类型;需要告诉它。幸运的是C有一个名为`sizeof()`的函数,我们可以使用它。
```C
arrayPtr = (int *)malloc(10 * sizeof(int));
```
该语句使用malloc为10个整数的数组预留内存。由于大小可以在计算机之间改变因此使用sizeof函数计算当前计算机的大小非常重要。
在程序关闭之前,需要释放在程序执行期间分配的任何内存。为了`free`内存我们可以使用free函数
```C
free( arrayPtr );
```
此语句将释放先前分配的内存。 C没有像其他语言一样带有`garbage collector` 例如Java。因此在程序关闭后将继续分配未正确释放的内存。
# 在你继续之前......
## 回顾
* Malloc用于动态内存分配在您不知道编译期间所需的内存量时非常有用。
* 分配内存允许对象存在于当前块的范围之外。
* C传递值而不是引用。使用malloc分配内存然后将指针传递给另一个函数比使用函数重新创建结构更有效。