[其他] realloc() 示例模板

[复制链接]
4423|8
 楼主| AdaMaYun 发表于 2024-3-28 22:21 | 显示全部楼层 |阅读模式


  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main() {
  4.     int *dynamicArray = (int*)malloc(sizeof(int) * 5);

  5.     if (dynamicArray == NULL) {
  6.         printf("Memory allocation failed.\n");
  7.         return 1;
  8.     }

  9.     // 填充初始的动态数组
  10.     for (int i = 0; i < 5; ++i) {
  11.         dynamicArray[i] = i * i;
  12.     }

  13.     // 打印初始数组内容
  14.     printf("Initial array:\n");
  15.     for (int i = 0; i < 5; ++i) {
  16.         printf("Element at index %d: %d\n", i, dynamicArray[i]);
  17.     }

  18.     // 尝试将数组容量扩展至10个元素
  19.     int *temp = (int*)realloc(dynamicArray, sizeof(int) * 10);
  20.     if (temp != NULL) {
  21.         dynamicArray = temp;
  22.         // 填充新增的元素
  23.         for (int i = 5; i < 10; ++i) {
  24.             dynamicArray[i] = i * i;
  25.         }
  26.     } else {
  27.         printf("Failed to reallocate memory. Keeping original size.\n");
  28.     }

  29.     // 打印扩展后的数组内容(或保持原大小)
  30.     printf("Reallocated array:\n");
  31.     for (int i = 0; i < (temp == NULL ? 5 : 10); ++i) {
  32.         printf("Element at index %d: %d\n", i, dynamicArray[i]);
  33.     }

  34.     // 释放内存
  35.     free(dynamicArray);
  36.     dynamicArray = NULL;

  37.     return 0;
  38. }

运行结果
1.png
在这个例子中,我们首先使用 malloc() 分配了一个能存储5个整数的空间,并填充了初始值。然后,我们尝试使用 realloc() 将数组容量扩展至10个元素。如果成功,我们填充新增的元素;否则,保持原大小。最后,我们打印扩展后的数组内容(或保持原大小),并释放内存。
tpgf 发表于 2024-4-1 16:08 | 显示全部楼层
通过这种方式分配的存储空间 可以使用什么方式进行释放呢
磨砂 发表于 2024-4-1 16:46 | 显示全部楼层
使用这个函数分配存储空间之后需要对相应的存储空间立刻进行赋值吗
晓伍 发表于 2024-4-1 17:06 | 显示全部楼层
为什么扩容的时候需要尝试着进行呢
木木guainv 发表于 2024-4-1 19:47 | 显示全部楼层
使用这种方式分配空间的大小可以控制吗
xiaoqizi 发表于 2024-4-1 20:18 | 显示全部楼层
可以分配的存储空间的上限是多少呢
wowu 发表于 2024-4-1 20:49 | 显示全部楼层
这个函数是c语言本身就支持的一种库函数吗
caigang13 发表于 2024-4-2 08:05 来自手机 | 显示全部楼层
在单片机程序开发中很少用malloc函数
OKAKAKO 发表于 2024-4-24 14:13 | 显示全部楼层
realloc() 将数组容量扩展至多个元素,方便数据增加
您需要登录后才可以回帖 登录 | 注册

本版积分规则

308

主题

2692

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部