| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /*
- * 示例16:动态内存分配(Dynamic Memory)
- * 功能:学习使用 malloc 和 free 动态分配和释放内存
- */
- #include <stdio.h>
- #include <stdlib.h> // malloc 和 free 函数所在的头文件
- int main() {
- // 动态分配内存:在程序运行时申请内存
- // malloc 参数是需要的字节数
- // sizeof(int) 返回 int 类型占用的字节数(通常是 4)
- int *ptr = (int *)malloc(sizeof(int));
- // 检查内存分配是否成功
- if (ptr == NULL) {
- printf("内存分配失败!\n");
- return 1;
- }
- // 使用分配的内存
- *ptr = 100;
- printf("动态分配的内存中存储的值:%d\n", *ptr);
- // 释放内存
- free(ptr);
- printf("内存已释放\n");
- // 动态分配数组
- printf("\n=== 动态分配数组 ===\n");
- int size;
- printf("请输入数组大小:");
- scanf("%d", &size);
- // 分配一个包含 size 个整数的数组
- int *arr = (int *)malloc(size * sizeof(int));
- if (arr == NULL) {
- printf("内存分配失败!\n");
- return 1;
- }
- // 给数组赋值并输出
- for (int i = 0; i < size; i++) {
- arr[i] = i * 10;
- printf("arr[%d] = %d\n", i, arr[i]);
- }
- // 释放数组内存
- free(arr);
- printf("数组内存已释放\n");
- return 0;
- }
|