在使用 realloc 动态调整内存大小时,初始化是一个重要的步骤股票配资口碑排行榜,尤其是在扩大内存后新增的部分。以下是关于初始化的详细说明和示例:
初始化动态分配的内存
初始分配时的初始化:
如果使用 calloc 分配内存,内存会被自动初始化为0。
如果使用分配内存,内存内容是不确定的(可能是垃圾值),需要手动初始化。
调整内存后的初始化:
使用 realloc 扩大内存后,新增的内存部分不会自动初始化,需要手动设置初始值。
示例代码
以下是一个完整的示例,展示如何通过 realloc 动态调整内存大小,并对新增部分进行初始化:
c
#include <stdio.h>
#include <stdlib.h>
展开剩余66%int main() {
// 1. 初始分配内存(3个整型)
int *ptr = (int*)malloc(sizeof(int) * 3);
if (ptr == NULL) {
printf("Memory allocation failed\n");
return 1;
}
// 初始化初始数据
ptr[0] = 1;
ptr[1] = 2;
ptr[2] = 3;
// 2. 调整内存大小为6个整型
int *new_ptr = (int*)realloc(ptr, sizeof(int) * 6);
if (new_ptr == NULL) {
printf("Memory reallocation failed\n");
free(ptr); // 释放原始内存
return 1;
} else {
ptr = new_ptr; // 更新指针
}
// 3. 初始化新增的部分(第4到第6个整型)
for (int i = 3; i < 6; i++) {
ptr[i] = i + 1; // 手动初始化新增部分
}
// 4. 使用调整后的内存
for (int i = 0; i < 6; i++) {
printf("%d "股票配资口碑排行榜, ptr[i]); // 输出: 1 2 3 4
发布于:浙江省