- #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个元素。如果成功,我们填充新增的元素;否则,保持原大小。最后,我们打印扩展后的数组内容(或保持原大小),并释放内存。
|