上一篇博客《c++的new与delete-CSDN博客》记录了c++中的动态内存分配及释放,这篇博客则记录c中的动态内存分配及释放。
malloc
malloc是c语言中用于动态分配内存的函数。它可以用来在程序运行时从堆(heap)中分配指定大小的内存块。
malloc的函数原型如下:
void* malloc(size_t size);
它接受一个size_t类型的参数size,表示要分配的内存块的大小(以字节为单位)。函数返回一个指向分配内存起始地址的void*
指针。如果分配失败,则返回NULL指针。
以下是一个使用malloc分配内存的示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
int* ptr;
int size = 5;
ptr = (int*)malloc(size * sizeof(int));
if (ptr == NULL) {
printf("内存分配失败");
return 1;
}
// 使用分配的内存, ptr[i]等价于*(ptr + i)
for (int i = 0; i < size; i++) {
ptr[i] = i + 1;
}
// 打印分配的内存
for (int i = 0; i < size; i++) {
printf("%d ", ptr[i]);
}
// 释放内存
free(ptr);
return 0;
}
在这个示例中,使用malloc分配了一个包含5个int元素的内存块。通过将返回的void*
指针转换为int*
类型,可以将其视为一个整数数组,并使用它来存储和访问数据。在使用完分配的内存后,使用free函数将其释放,以便将内存返回给系统。
需要注意的是,使用malloc分配的内存需要手动释放,否则可能会导致内存泄漏。另外,为了正确地处理内存分配失败的情况,应该检查返回的指针是否为NULL。