为什么strlen()
不检查NULL?
如果我执行strlen(NULL)
,程序分段就会出错。
试图理解它背后的理由(如果有的话)。
发布于 2011-04-27 04:34:13
它背后的理性很简单--您如何检查不存在的东西的长度?
此外,与“托管语言”不同的是,运行时系统不会正确处理无效数据或数据结构。(这种类型的问题正是为什么更“现代”的语言在非计算或性能要求较低的应用程序中更受欢迎)。
C++中的标准模板如下所示
int someStrLen;
if (someStr != NULL) // or if (someStr)
someStrLen = strlen(someStr);
else
{
// handle error.
}
发布于 2011-04-27 04:34:59
标准并不要求它,所以实现只是避免了测试和潜在的昂贵的跳跃。
发布于 2014-01-02 19:29:20
一个小小的宏来帮助你的悲痛:
#define strlens(s) (s==NULL?0:strlen(s))
https://stackoverflow.com/questions/5796103
复制相似问题