assert仅在调试版本中起作用,而不会存在于release版本。assert仅用于检查确实不可能的条件,这只对程序的调试有帮助,但不能代替运行时的逻辑检查,也不能代替对程序可能产生的错误的检测。
1 int foo(int a[], size_t n) 2 { 3 assert (a != NULL); // 仅在debug版本中对程序调试有帮助,可以更快的定位错误的地点 4 5 if (NULL == a) 6 { 7 // 这个检查也是不可丢弃的,防止在release版本中出现空指针而得不到有效处理的情况 8 return (-1); 9 } 10 11 // do some work 12 13 return (0); 14 }