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