发布于:2021-02-07 14:10:20
0
650
0
C中的malloc是什么?
malloc()函数代表内存分配。它是一个用于动态分配内存块的函数。它保留指定大小的内存空间,并返回指向内存位置的空指针。返回的指针通常是void类型。这意味着我们可以将malloc函数分配给任何指针。
语法
ptr = (cast_type *) malloc (byte_size);
ptr是一个cast类型的指针。
malloc函数返回一个指向字节大小的分配内存的指针。
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
注意,sizeof(*ptr)被用来代替sizeof(int),以便在以后将*ptr声明类型转换为不同的数据类型时使代码更加健壮。
如果内存不足,分配可能会失败。在本例中,它返回一个空指针。因此,应该包含检查空指针的代码。
请记住,分配的内存是连续的,可以将其视为数组。我们可以使用指针算法来访问数组元素,而不是使用括号[]。我们建议使用+来引用数组元素,因为使用incrementation++或+=会更改指针存储的地址。
Malloc函数还可以用于字符数据类型以及复杂数据类型(如结构)。
作者介绍