动态分配

malloc()、calloc()、realloc()、free()函数

前三个函数是用来动态分配内存,以下都是定义4个int类型的内存空间,然后运用free释放空间(越早释放越好)。

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

int main()
{
   int *p1=(int*)malloc(sizeof(int)*4);
   int *p2=(int*)calloc(4, sizeof(int));
   int *p3=realloc(NULL,sizeof(int)*4);


   //......
   
   free(p1);
   free(p2);
   free(p3);
}
   


### 动态分配内存后打印变量值或动态数组的方法 在C语言中,动态分配内存通常使用`malloc()`、`calloc()`等函数来完成。一旦成功分配了内存空间,可以通过指针访问这些动态分配的内存区域,并将数据存储到其中。为了打印动态分配的内容,可以使用标准输入输出库中的函数(如`printf()`)。 以下是动态分配内存后打印变量值或动态数组的具体方法: #### 打印单个动态分配的变量 当使用`malloc()`或`calloc()`分配一个单一变量时,可以通过解引用指针来访问其值并打印。例如: ```c int *p = (int *)malloc(sizeof(int)); // 动态分配一个整数的空间 if (p == NULL) { // 检查是否成功分配 printf("内存分配失败\n"); } else { *p = 42; // 给动态分配的变量赋值 printf("动态分配的变量值为:%d\n", *p); // 打印动态分配的变量值[^3] } free(p); // 释放动态分配的内存 ``` #### 打印动态分配的数组 对于动态分配的数组,可以使用循环逐一访问每个元素并打印其值。以下是一个示例代码: ```c int count, *array; count = 10; // 假设要分配10个整数的空间 array = (int *)malloc(count * sizeof(int)); // 动态分配数组 if (array == NULL) { // 检查是否成功分配 printf("内存分配失败\n"); } else { for (int i = 0; i < count; i++) { array[i] = i * 2; // 给数组赋值 } for (int i = 0; i < count; i++) { printf("array[%d] = %d\n", i, array[i]); // 打印数组元素 } } free(array); // 释放动态分配的内存 ``` #### 注意事项 - 在打印动态分配的内容之前,必须确保内存分配成功,否则可能导致程序崩溃。 - 使用完动态分配的内存后,应及时调用`free()`释放内存,以避免内存泄漏[^2]。 - 如果需要重新调整动态分配的内存大小,可以使用`realloc()`函数[^5]。 ### 示例代码总结 上述代码展示了如何通过指针访问动态分配的内存,并使用`printf()`函数打印其内容。无论是单个变量还是数组,都可以通过这种方式实现打印。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值