关于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的值,差别大了