标题:
[讨论]代码陷阱
[打印本页]
作者:
x86
时间:
2005-9-29 18:51
标题:
[讨论]代码陷阱
首先声明:此帖严禁灌水!
大家一起来写下在写代码过程中遇到的各种各样的错误,比如:
错误类型:内存分配
代码类型:
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;
作者:
x86
时间:
2005-10-2 12:23
标题:
[讨论]代码陷阱
错误类型:死循环 代码类型: 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;
欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/)
Powered by Discuz! 7.2