C 库中的 malloc() 函数及示例

C 语言中的 malloc 是什么?

malloc() 函数代表内存分配。它是一个用于动态分配内存块的函数。它保留指定大小的内存空间,并返回指向内存位置的空指针。返回的指针通常是 void 类型。这意味着我们可以将 malloc 函数分配给任何指针。

语法

ptr = (cast_type *) malloc (byte_size);

此处,

  • ptr 是一个 cast_type 的指针。
  • malloc 函数返回一个指向 byte_size 分配内存的指针。
Example: ptr = (int *) malloc (50)

当此语句成功执行时,将保留 50 字节的内存空间。保留空间第一个字节的地址被赋给 int 类型的指针 ptr。

考虑另一个 malloc 实现的例子

#include <stdlib.h>
int main(){
int *ptr;
ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */
    if (ptr != NULL) {
      *(ptr + 5) = 480; /* assign 480 to sixth integer */
      printf("Value of the 6th integer is %d",*(ptr + 5));
    }
}

输出

Value of the 6th integer is 480

What is malloc in C

  1. 请注意,使用了 sizeof(*ptr) 而不是 sizeof(int),以使代码在 *ptr 声明稍后被转换为不同数据类型时更加健壮。
  2. 如果内存不足,分配可能会失败。在这种情况下,它会返回一个 NULL 指针。因此,您应该包含代码来检查 NULL 指针。
  3. 请记住,分配的内存是连续的,可以将其视为一个数组。我们可以使用指针算术来访问数组元素,而不是使用方括号 [ ]。我们建议使用 + 来引用数组元素,因为使用递增 ++ 或 += 会更改 指针 存储的地址。

malloc 函数也可以用于字符数据类型以及结构等复杂数据类型。