读书人

关于free,该如何解决

发布时间: 2012-04-25 19:32:32 作者: rapoo

关于free

[code=C/C++][/code]
void main()
{
int i=0;
int *p=(int *)malloc(4);
p=&i;
free(p);
p=0;
}


编译没错
为什么一运行到free就错误


[解决办法]
原来p指向的是(int *)malloc(4);
现在p=&i;因为i的内存不是由malloc开辟的,所以不能free

[解决办法]
你想把一个分配在栈上的空间划给堆,系统当然反应激烈了。
[解决办法]
int i=0;
p=&i;// p->指向一个栈区
free(p) //释放p所指向的区域给内存 前提条件是它所指向的是堆区
[解决办法]
lz试图free一片栈上的空间?
系统不会让你得逞的。
[解决办法]
p=&i;
把这句去掉
[解决办法]
p= &i;和*p=i,,一个是让把i的地址给P,一个是让p指向的地址里面放上i的值,差别大了

读书人网 >C语言

热点推荐