相关:
【c语言】malloc函数详解:https://blog.youkuaiyun.com/flowing_wind/article/details/81240910
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); -
}
本文介绍C语言中如何使用malloc函数动态分配内存,并通过实例演示了如何将文件内容读取到内存,然后再写入到另一文件的过程。涉及内存分配、文件操作及内存释放等关键步骤。
593

被折叠的 条评论
为什么被折叠?



