1.使用自动内存分配的时候,请认真面对,因为一不注意就内存泄露了!
如下代码:
func(int a,int b)
{
ptr = new int(10);
if(a > 5)
return -1;
else
{
.
.
.
}
delete(ptr);
}
这样的代码的问题就是每当调用func,并且当a>5时,内存就开始泄露了。
正确的处理方法是,每次先检查参数的合法性,再new。如下:
func(int a,int b)
{
if(a > 5)
return -1;
else
{
ptr = new int(10);
.
.
.
}
delete(ptr);
}
还是那句话,使用内存分配函数的时候,再小心都不为过!
2.使用if语句等条件判断的时候,再小心都不为过!
出bug的语句是这样的:
for(...; ... ; ...)
{
if(func(a) == 0)
{
step++;
current = ptr_array[step];
.
.
.
}
}
这里只要当func(a)调用成功,那么函数都是没问题的,可是一旦func(a)调用失败,step和current都不能取得正确值,最终导致其他使用这两个变量的函数调用都会出错。
这样的逻辑就正确了:
for(...; ... ; ...)
{
step++;
current = ptr_array[step];
if(func(a) == 0)
{
.
.
.
}
}
总结:在使用if的地方,多思考,多假设,宁可多花一些时间,也要把可能的情况都假设一遍,这些地方最容易出bug,多思考,绝不为过!