C语言free函数的使用解决方法
C语言free函数的使用
free的不能截断释放:比如我申请10个sizeof单位的内存空间,并存放10个sizeof单元数据,但后来要去掉后面5个
能这样用free释放后面5个吗?
a=(type *)malloc(10*sizeof(type));
for(i=5;i<10;i++)free(a+i);
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int *getArray(){
int *a=(int *)malloc(5*sizeof(int));
if(!a)return 0;
a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;
free(a+3);
free(a+4);
return a;
}
void main(){
int i;
int *array=getArray();
for(i=0;i<3;i++)printf("%d ",array[i]);
getch();
}
//我知道用realloc是可以的
------解决方案--------------------
不能
申请的那块内存必须作为一个整体来释放
------解决方案--------------------
不可以
指针在那个位置申请 就得在那个位置释放
free的不能截断释放:比如我申请10个sizeof单位的内存空间,并存放10个sizeof单元数据,但后来要去掉后面5个
能这样用free释放后面5个吗?
a=(type *)malloc(10*sizeof(type));
for(i=5;i<10;i++)free(a+i);
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int *getArray(){
int *a=(int *)malloc(5*sizeof(int));
if(!a)return 0;
a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;
free(a+3);
free(a+4);
return a;
}
void main(){
int i;
int *array=getArray();
for(i=0;i<3;i++)printf("%d ",array[i]);
getch();
}
//我知道用realloc是可以的
------解决方案--------------------
不能
申请的那块内存必须作为一个整体来释放
------解决方案--------------------
不可以
指针在那个位置申请 就得在那个位置释放