首先声明:此帖严禁灌水!
大家一起来写下在写代码过程中遇到的各种各样的错误,比如:
错误类型:内存分配
代码类型:
char *str=(char*)malloc(sizeof(char)*size);
str="new string!";//改变了str的指向的地址
free(str);//错误释放
str=NULL;//防止野指针
错误描述:malloc和free所对应的内存空间的起始地址应该是一致的,如果中间存储地址的指针被修改了,最后释放的时候会指向一段非malloc分配的空间,导致异常错误.通常编译器会编译通过,但是在运行的时候会有程序错误提示,也有可能没有错误提示.
解决方法:在分配内存的时候,把获取内存的起始地址用一个变量保存,最后在释放内存的时候再把地址赋给原始的指向那块内存的指针.
代码描述:
char *temp;
char *str=(char*)malloc(sizeof(char)*size);
temp=str;
str="new string!";//改变了str的指向的地址
str=temp;
free(str);//错误释放
str=NULL;//防止野指针
temp=NULL;
|