首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言free函数的使用解决方法

2012-06-05 
C语言free函数的使用free的不能截断释放:比如我申请10个sizeof单位的内存空间,并存放10个sizeof单元数据,

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是可以的

[解决办法]
不能
申请的那块内存必须作为一个整体来释放
[解决办法]
不可以 

指针在那个位置申请 就得在那个位置释放

热点排行