C语言【malloc函数】
malloc
函数是 C 语言中的动态内存分配函数,用于在运行时分配指定大小的内存空间。它的函数原型如下:
void *malloc(size_t size);
malloc
函数接受一个参数 size
,表示要分配的内存空间的大小(以字节为单位)。它返回一个指向分配的内存块的指针。如果内存分配失败,则返回 NULL
。
使用 malloc
函数的一般步骤如下:
- 引入
stdlib.h
头文件,该头文件包含了malloc
函数的声明。 - 调用
malloc
函数,并传递要分配的内存大小作为参数。 - 检查返回的指针是否为
NULL
,以确保内存分配成功。 - 使用分配的内存空间进行操作。
- 最后,在不再需要分配的内存空间时,使用
free
函数释放它,以防止内存泄漏。
demo1:
#include <stdio.h> #include <stdlib.h> int main() { int* numbers; int size = 5; // 分配内存空间 numbers = (int*)malloc(size * sizeof(int)); if (numbers == NULL) { printf("内存分配失败!\n"); return 1; } // 初始化数组 for (int i = 0; i < size; i++) { numbers[i] = i + 1; } // 打印数组元素 for (int i = 0; i < size; i++) { printf("%d ", numbers[i]); } printf("\n"); // 释放内存空间 free(numbers); return 0; }
上述示例代码中,首先声明了一个指向整型的指针 numbers
,然后使用 malloc
函数分配了一个包含 5 个整型元素的内存空间。如果分配成功,numbers
将指向分配的内存块。然后,通过循环初始化数组元素,并打印出来。最后,使用 free
函数释放内存空间。
malloc
函数非常有用,特别是在需要动态分配内存的情况下,例如创建动态数组、链表等数据结构时。在使用完分配的内存后,务必记得释放内存,以避免内存泄漏。
demo2
#include <stdio.h> #include <stdlib.h> int main() { int* numbers; int numElements = 10; // 分配内存 numbers = (int*)malloc(numElements * sizeof(int)); if (numbers == NULL) { // 内存分配失败,进行错误处理 printf("内存分配失败\n"); exit(1); // 可以退出程序或进行其他适当的处理 } // 使用内存 for (int i = 0; i < numElements; i++) { numbers[i] = i * 2; } // 打印结果 for (int i = 0; i < numElements; i++) { printf("%d ", numbers[i]); } printf("\n"); // 释放内存 free(numbers); return 0; }
demo2_or:
#include <stdio.h> #include <stdlib.h> int main() { int* numbers; int numElements = 10; // 分配内存 numbers = (int*)malloc(numElements * sizeof(int)); if (numbers == NULL) { // 内存分配失败,进行错误处理 printf("内存分配失败\n"); exit(1); // 可以退出程序或进行其他适当的处理 } // 使用内存 int* ptr = numbers; // 将指针 ptr 指向数组的起始地址 for (int i = 0; i < numElements; i++) { *ptr = i * 2; // 使用指针来赋值 ptr++; // 移动指针到下一个元素的地址 } // 打印结果 ptr = numbers; // 重新将指针 ptr 指向数组的起始地址 for (int i = 0; i < numElements; i++) { printf("%d ", *ptr); // 使用指针来打印数组元素的值 ptr++; // 移动指针到下一个元素的地址 } printf("\n"); // 释放内存 free(numbers); return 0; }
output:
本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/17509670.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步