C++编码过程中不得不注意的几个方面
2011-05-09 10:39
267 查看
1.指针的使用。
使用指针之前一定要做判断if(NULL != point);
一定要做内存申请失败判断
void * p = new Class;
if(NULL == p)
{
...
}
内存销毁后,一定要将指针赋空值
delete point;
point = NULL;
2.文件的使用。
打开文件后一定要记得关闭文件,需要注意的是,这与文件打开方式是Write还是Read无关,都得严格按照要求打开/关闭文件。
3.线程锁的使用。
需要要强调的是,在Lock和Unlock区域内不应该有函数调用,这是比较隐秘的BUG滋生地,举例说明一下
CLock myLock;
void f1()
{
...
myLock.Lock();
...
f2();
...
myLock.UnLock();
...
}
void f2()
{
...
f3();
...
}
void f3()
{
...
fn();
...
}
void fn()
{
...
myLock.Lock();
...
myLock.Unlock();
}
在例子中我在fn()函数里面使用了myLock,而不是在f2函数中,往往就是这样,在你编写f1函数的时候,f2函数是可以预测的,你可以确保f2函数里面不会调用myLock.Lock()方法,但是,随着时间的推移,程序的不断更新,人员的更替,我们还能确保其他f2调用的其他函数里面不会使用myLock吗?
最简单的做法是Lock()与Unlock()之间不调用其他函数。
4.句柄的使用
Windows编程经常会使用到各种句柄(HANDLE),使用API函数生成一个句柄后,一定要记得关闭该句柄(CloseHandle)。
使用指针之前一定要做判断if(NULL != point);
一定要做内存申请失败判断
void * p = new Class;
if(NULL == p)
{
...
}
内存销毁后,一定要将指针赋空值
delete point;
point = NULL;
2.文件的使用。
打开文件后一定要记得关闭文件,需要注意的是,这与文件打开方式是Write还是Read无关,都得严格按照要求打开/关闭文件。
3.线程锁的使用。
需要要强调的是,在Lock和Unlock区域内不应该有函数调用,这是比较隐秘的BUG滋生地,举例说明一下
CLock myLock;
void f1()
{
...
myLock.Lock();
...
f2();
...
myLock.UnLock();
...
}
void f2()
{
...
f3();
...
}
void f3()
{
...
fn();
...
}
void fn()
{
...
myLock.Lock();
...
myLock.Unlock();
}
在例子中我在fn()函数里面使用了myLock,而不是在f2函数中,往往就是这样,在你编写f1函数的时候,f2函数是可以预测的,你可以确保f2函数里面不会调用myLock.Lock()方法,但是,随着时间的推移,程序的不断更新,人员的更替,我们还能确保其他f2调用的其他函数里面不会使用myLock吗?
最简单的做法是Lock()与Unlock()之间不调用其他函数。
4.句柄的使用
Windows编程经常会使用到各种句柄(HANDLE),使用API函数生成一个句柄后,一定要记得关闭该句柄(CloseHandle)。
相关文章推荐
- 防止SEO优化过度需要注意的几个方面
- CPU卡发卡程序设计过程中应当注意的几个问题
- Python编码时应该注意的几个情况
- CPU卡发卡程序设计过程中应当注意的几个问题
- 打造日IP超过万的不错的几个注意方面
- 运维安全需要注意的几个方面
- 几个java,J2EE编码过程中的缺少jar文件抛出的异常
- STP选举过程中几个要注意的问题
- 选取域名需要注意的几个方面
- 软考考试过程中应注意的几个问题
- C++从MySQL读二进制数据的几个注意点
- C++的几个注意点
- 颠覆式创新的企业需要注意的几个方面
- c风格字符串和C++的string在文件名方面的使用注意
- 修复eWebEditor漏洞需要注意以下几个方面(大全总结)
- 考虑SQL Server安全时所应注意的几个方面
- ASP网站布署的几个重要注意事项!(切记,不要在这方面浪费时间!)
- Sqlserver:谈索引优化需要注意的几个方面
- 搜素引擎不得不解决的几个方面
- 架构设计的几个方向点应该注意如下几个方面