1,在c语言中,入参判断是很重要的一环,但是有时候入参的判断会导致内存泄漏或者是句柄泄露,我们来举例来说明吧!
(1)内存泄漏
int function_test1(int c)
{
int* p = (int*)malloc*sizeof(int));
assert(q != NULL)
if( c < 0)
{
return -1; //这里需要free(p);
}
/***********
if( c < 0)
{
free(p);
p = NULL;
return -1; //这里需要free(p);
}
**********/
free(p);
return 0;
}
总结:
1) 每次申请内存前必须明确由谁负责释放,何时释放,在何处释放;
2) 在异常分支中,保持清醒,一定要在return语句前考虑是否要释放内存;
3) 内存申请后立即检查是否申请成功,不要多个指针用同一个if语句判断;
4) 申请内存成功后,禁止对指向给内存地址的指针重新赋值。
int function_test2()
{
int* p = (int*)malloc*sizeof(int));
int* q = (int*)malloc*sizeof(int));
if( p =