事实上,ANSI C标准所能保证的只是,C实现必须能够区别前6个字符不同的外部名称。而且
这个定义中并没有区分大写字母和相应的小写字母。
标识符名称的限制
char *Malloc(unsigned n) {
char *p, *malloc(unsigned);
p = malloc(n);
if (p == NULL) {
panic("out of memory");
}
return p;
}
如果这个函数的编译环境是不区分外部名称大小写的C语言实现,此时函数Malloc与malloc实际上
是等同的。程序在第一次试图分配内存时,对Malloc函数的调用将引起一系列的递归调用,而这
写递归调用又不存在一个返回点,最后引发灾难性的后果!