glibc源码分析
文章平均质量分 83
jerry9032
这个作者很懒,什么都没留下…
展开
-
strlen源码分析
glibc2.7中的strlen函数没有使用简单的逐位测试null的方法计算字符串的长度,而是通过一个magic number,每四位一组测试一次的方法进行测试。magic number为:0x7efefeff。二进制展开后为:01111110 11111110 11111110 11111111。其实就是一个第8,16,14,31位为0,其余都是1的整数。这些为0的位称为“洞(hole)原创 2011-06-18 10:47:00 · 309 阅读 · 0 评论 -
strcspn源码分析
刚看到CRT中的strcspn的实现时,很是惊诧!靠,这么优秀的算法,分析了老半天才搞明白。世界上为啥聪明的人这么多呢?原型:size_t strcspn(const char *pstr, const char *strCharset) MSDN解释为:在字符串pstr中搜寻strCharsret中所出现的字符,返回strCharset中出现的第一个字符在pstr中的出现原创 2011-06-17 14:58:00 · 678 阅读 · 0 评论 -
strsep源码分析
strsep() 函数将分割一个字符串。char * strsep (char **stringp, const char *delim); 从 stringp 指向的位置起向后扫描,遇到 delim 指向的字符串中的字符后,将此字符替换为NULL,返回 stringp 指向的地址。 由于第二个参数 delim 也是字符串,因此猜想可能会采取类似 strcspn 的策略。查原创 2013-09-20 16:15:02 · 1576 阅读 · 0 评论 -
strcmp/strncmp源码分析
1. strcmp strcmp 用于比较两个字符串是否相等。内部实现与我们最初的想法一致,就是循环遍历两个字符串,遇到不相等的那一位即返回差值。intstrcmp (p1, p2) const char *p1; const char *p2;{ register const unsigned char *s1 = (const unsigned cha原创 2013-09-21 18:58:20 · 2881 阅读 · 0 评论