打印
[其他]

realloc() 示例模板

[复制链接]
3977|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主


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

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

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

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

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

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

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

    // 释放内存
    free(dynamicArray);
    dynamicArray = NULL;

    return 0;
}

运行结果

在这个例子中,我们首先使用 malloc() 分配了一个能存储5个整数的空间,并填充了初始值。然后,我们尝试使用 realloc() 将数组容量扩展至10个元素。如果成功,我们填充新增的元素;否则,保持原大小。最后,我们打印扩展后的数组内容(或保持原大小),并释放内存。

使用特权

评论回复
沙发
tpgf| | 2024-4-1 16:08 | 只看该作者
通过这种方式分配的存储空间 可以使用什么方式进行释放呢

使用特权

评论回复
板凳
磨砂| | 2024-4-1 16:46 | 只看该作者
使用这个函数分配存储空间之后需要对相应的存储空间立刻进行赋值吗

使用特权

评论回复
地板
晓伍| | 2024-4-1 17:06 | 只看该作者
为什么扩容的时候需要尝试着进行呢

使用特权

评论回复
5
木木guainv| | 2024-4-1 19:47 | 只看该作者
使用这种方式分配空间的大小可以控制吗

使用特权

评论回复
6
xiaoqizi| | 2024-4-1 20:18 | 只看该作者
可以分配的存储空间的上限是多少呢

使用特权

评论回复
7
wowu| | 2024-4-1 20:49 | 只看该作者
这个函数是c语言本身就支持的一种库函数吗

使用特权

评论回复
8
caigang13| | 2024-4-2 08:05 | 只看该作者
在单片机程序开发中很少用malloc函数

使用特权

评论回复
9
OKAKAKO| | 2024-4-24 14:13 | 只看该作者
realloc() 将数组容量扩展至多个元素,方便数据增加

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

240

主题

1848

帖子

3

粉丝