|
概念:申请的内存,首地址丢了,找不了,再也没法使用了,
也没法释放了,这块内存就被泄露。
例1:
int main()
{
char *p;
p=(char *)malloc(100);
//接下来,可以用p指向的内存了
p="hello
world";//p指向别的地方了
//从此以后,再也找不到你申请的100个字节了。
}
例2:
void fun()
{
char *p;
p=(char *)malloc(100);
//接下来,可以用p指向的内存了
;
;
}
int main()
{
fun();
fun();
return 0;
}
例2解决方案1:
void fun()
{
char *p;
p=(char *)malloc(100);
//接下来,可以用p指向的内存了
;
;
free(p);
}
int main()
{
fun();
fun();
return 0;
}
例2解决方案2:
char * fun()
{
char *p;
p=(char *)malloc(100);
//接下来,可以用p指向的内存了
;
;
return p;
}
int main()
{
char *q;
q=fun();
//可以通过q使用 ,动态申请的100个字节的内存了
//记得释放
free(q);
return 0;
}
总结:申请的内存,一定不要把首地址给丢了,在不用的时候
要释放内存。