c中malloc申请堆空间使用及案例

c中malloc申请堆空间
void test22() {
	int *pr;
	pr = (int *)malloc(sizeof(int)*128);//申请128个int4字节空间

	if (pr == NULL) {//判断是否申请成功
		return;
	}

	memset(pr,0,sizeof(int)*128);//初始化空间为0




	free(pr);//释放空间
	pr = NULL;

}

具体使用以文件读写为例,把文件读到内存中再写入另一个文件
void test23() {
	char *pr;
	char *prr;
	FILE *myf = NULL;
	FILE *myTF = NULL;
	int size = 0;
	int i = 0;
	//二进制打开文件
	myf = fopen("E:/vs/work/calc.exe","rb");
	myTF = fopen("E:/vs/work/test.exe", "wb");
	//判断文件是否打开成功
	if (!myf) {
		printf("\nerror:wen jian");
		return;
	}

	if (!myTF) {
		printf("\nerror:wen jian");
		return;
	}
	//计算文件大小
	if ((fseek(myf,0L, SEEK_END))) {
		printf("\nerror:pian yi");
		return;
	}

	size = ftell(myf);
	if (size == 0) {
		printf("\nerror:dax iao");
		return;
	}

	printf("\nget file size:%x", size);
	//申请空间
	pr = (char *)malloc(sizeof(char) * size);

	if (pr == NULL) {
		printf("\nerror:nei cun");
		return;
	}
	//初始化空间
	memset(pr, 0, sizeof(char) * size);
	//定位指针到开头
	fseek(myf, 0L, 0L);

	//一个个字符写入内存
	prr = pr;
	while (++i <= size)
	{
		*pr = fgetc(myf);
		pr++;
	}
	//或者直接二进制写入内存
	i = 0;
	i = fread(pr,size,1,myf);
	printf("\nread file date number:%x", i);

	//指针回到首地址
	pr = prr;
	
	printf("\nget file date location:%x", prr);
	i = 0;
	//二进制写入文件
	i = fwrite(pr, size, 1, myTF);
	printf("\nwrite file date number:%x",i);

	printf("\nput OK !");
	//释放内存关闭文件
	free(pr);
	pr = NULL;
	prr = NULL;
	fclose(myf);
	fclose(myTF);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值