返回列表 发帖

[讨论]代码陷阱

首先声明:此帖严禁灌水!
大家一起来写下在写代码过程中遇到的各种各样的错误,比如:

错误类型:内存分配
代码类型:
         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;

[讨论]代码陷阱

错误类型:死循环 代码类型: unsigned char i; int str[255] for(i=0;i<=255;i++) str=i; 错误描述: 执行此代码后程序会陷入一个死循环,因为i==255之后i++又变成0 解决方法:做好上限处理 代码描述:unsigned char i; int str[255] for(i=0;i<255;i++) str=i;

TOP

返回列表 回复 发帖