关于malloc使用问题,总结了一下malloc使用大致分成两个门派,如下:
/*第一种*/
int len = 10000000000;
int *ptr= (int *)malloc(sizeof(int) * len);
/*第二种*/
int len = 10000000000;
int *ptr= (int *)malloc(sizeof(int) * len);
if(ptr==NULL)
{
printf("malloc ptr error!!!\n");
}
一种就是没有做错误处理或者判断,另一种是有做错误处理。
这两种方式对于熟悉自己芯片资源的情况下,无伤大雅,反正自己知道空间足够,100%能申请成功。但是对于大工程移植或者团队开发排查异常问题时,出现异常又没办法确定问题,这个时候就凸显出这种错误处理的作用,可以大大缩短排查时间。
其实不光是malloc的错误处理,任何一个类似的情况都应该加一个错误处理。例如:
/*
Calculate_Sum:求和函数
异常返回-1
成功返回值>0
*/
int Calculate_Sum(unsigned short a, unsigned short b)
{
if(a>65535 || b>65535)
return -1;
return a+b;
}
int main(void argc, void*argv[])
{
if(Calculate_Sum(65536, 1)<0)
{
//异常处理
printf("Calculate_Sum error!!!\n");
}
return 0;
}