自我总结十大编程常犯错误
时间:2010-09-16 来源:fishmwei
1.申请空间,没有判断是否申请成功直接使用
2.申请完空间,想当然的以为里面的值为0(给整型分配空间)或者NULL(分配指针空间),须知道凡事得求100%。最好,用memset函数设置一下。
3.函数return之前,空间没有释放,导致内存溢出或者段错误
4.有些函数参数是指针,却不是传指针进去。比如:memcpy函数。
char buf[100];
int len;
把len的值放到buf首地址开始位置中:memcpy(buf, &len, sizeof(len));
len可能忘记取地址。 5.函数参数定义错误,实现功能:声明一个指针,通过函数参数返回一块地址空间。比如:
int getbuf(char *get)//函数声明写成这样 调用模块函数:
char *get;
getbuf(get);
...
然后对get进行操作,error!!! 修改: int getbuf(char **get)//注意函数参数类型
调用:
char *get;
getbuf(&get);
这样就可以对get指针操作了。 6.计算一个字符串长度时,习惯性的使用sizeof()函数。应该使用strlen。 7.使用memmov,拷贝区域可能重叠 8.条件判断语句,判断相等时少敲了一个等号。解决方法:尽量将常量值放在等号左边。 9.死循环,需要注意要有无条件退出语句。 10.文件、socket等注意要close掉。而不是用free!!
char buf[100];
int len;
把len的值放到buf首地址开始位置中:memcpy(buf, &len, sizeof(len));
len可能忘记取地址。 5.函数参数定义错误,实现功能:声明一个指针,通过函数参数返回一块地址空间。比如:
int getbuf(char *get)//函数声明写成这样 调用模块函数:
char *get;
getbuf(get);
...
然后对get进行操作,error!!! 修改: int getbuf(char **get)//注意函数参数类型
调用:
char *get;
getbuf(&get);
这样就可以对get指针操作了。 6.计算一个字符串长度时,习惯性的使用sizeof()函数。应该使用strlen。 7.使用memmov,拷贝区域可能重叠 8.条件判断语句,判断相等时少敲了一个等号。解决方法:尽量将常量值放在等号左边。 9.死循环,需要注意要有无条件退出语句。 10.文件、socket等注意要close掉。而不是用free!!
相关阅读 更多 +