D. 实验10_7_动态分配内存_1

本文介绍如何使用C语言中的malloc和free函数进行动态数组的创建与释放,通过实例演示了读取整数、修改其值并输出的过程,强调了内存管理的重要性。

已知正整数n,你要利用malloc函数动态开辟一个长度为n的整型数组,然后读取n个整数存入该数组中。再将这n个整数全部改为其相反数(例如10的相反数是-10,-10的相反数是10)的10倍,然后将其输出。最后你要利用free函数将该动态数组所占用的空间释放。
提示:malloc与free的使用,以下代码即建立了一个长度为n的整型动态数组,并释放:
int *a,n;
scanf(“%d”,&n);
a=(int * )malloc(sizeof(int) * n);// 建立长度为n的动态整型数组
free(a);//释放动态内存

输入为两行,第一行为一个正整数n,第二行为n个用空格分隔整数。测试用例保证所有整数可以用int存储,且为这n个整数申请内存不会超出内存限制。
输出只有一行,为用计算后的n个整数,这n个整数之间用一个空格分隔。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
	int n;
	scanf("%d",&n);
	int *a;
	a=(int *)malloc(sizeof(int)*n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(int i=0;i<n;i++)
	{
		printf("%d ",(-1)*a[i]*10);
	}
	free(a);
	return 0;
}
### 关于 `malloc` 和 `free` 的解释 在C语言中,`malloc()` 是一个用于动态内存分配的重要函数。该函数位于 `<stdlib.h>` 库内[^1]。当程序执行期间需要创建数据结构或对象而这些对象的生命周期不确定时,可以利用此功能来获取所需的内存。 对于 PTA 实验 10_2 中提到的内容,下面提供了一个简单的例子展示如何使用 `malloc()` 来申请一块整型数组的空间以及之后通过 `free()` 将其释放: ```c #include <stdio.h> #include <stdlib.h> int main(){ int *array; size_t size; // 获取用户输入作为数组长度 printf("Enter array size: "); scanf("%zu", &size); // 使用 malloc 分配足够的连续字节给指针变量 "array" array = (int *)malloc(size * sizeof(int)); if(array == NULL){ fprintf(stderr,"Memory allocation failed\n"); exit(EXIT_FAILURE); } // 初始化并打印新分配的数组元素 for(unsigned long i=0 ;i<size;++i){ *(array+i)=rand()%100+1; printf("%d ",*(array+i)); } putchar('\n'); // 当不再需要这块内存的时候调用 free 进行回收 free(array); return EXIT_SUCCESS; } ``` 上述代码片段展示了基本的操作流程:先声明指向目标类型的指针;接着根据需求计算所需字节数并通过 `malloc()` 请求相应数量的堆区空间;最后记得适时地清理已使用的资源以免造成泄漏。 #### 注意事项 - 调用 `malloc()` 后应立即检查返回值是否为空(`NULL`)以防发生错误。 - 成功获得地址后要正确转换成对应的数据类型以便后续操作。 - 访问由 `malloc()` 返回的位置之前一定要确认已经成功完成了分配过程。 - 完毕后务必及时释放掉临时占用的那部分区域以维持良好的编程习惯。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值