首先掌握几个原则:
1. 谁使用,谁创建,谁释放!
2. char *str1,str2[],str3[N] 使用时候的侧重点!
一般来说,有如下几种使用情况:
A.先看这段代码:
这段代码是有问题的,问题出在free(str)上面.
所以凡是用到 char *str;str = malloc();类似的这种分配了内存的指针,是不能改变或者赋值的;
这句话,str = str1;将str的指向变了,因为在free(str)的时候,这是未定义行为!
这会造成什么后果呢?就是你malloc的这段地址永远都不会被释放了,造成内存泄露!
应该改成这样
将str = str1;替换成strcpy(str,str1);str的地址就不会变了,就能free()成功!
B.再看这种情况:
这种情况呢,就是不必担心内存泄露!
总结一下吧!
1. 在str分配malloc空间之后,free()之前,不要去试图改变其指针位置!
2. 对于上述两个小程序,str1,这个参数的内存释放应该由它的上层完成,也就是遵守内存分配使用释放原则!
3. 什么时候用 char *str, 什么时候用 char str[MAX]呢,这个就看自己爱好和程序平台什么的了..