|
这些函数属于非常基本的C库函数,学编程超过3天的人都知道。然而很多人不知道的是,这些函数不会检查字符串指针的有效性,如果字符串指针无效,就翻车了。比如以下程序:- void main()
- {
- WCHAR s1[] = L"s1";
- WCHAR s2[] = L"s2";
- __try
- {
- printf("%ld\n",wcsicmp(NULL,NULL));
- }
- __except(1)
- {
- puts("exception[1].");
- }
- __try
- {
- printf("%ld\n",wcsicmp(s1,NULL));
- }
- __except(1)
- {
- puts("exception[2].");
- }
- __try
- {
- printf("%ld\n",wcsicmp(NULL,s1));
- }
- __except(1)
- {
- puts("exception[3].");
- }
- __try
- {
- printf("%ld\n",wcsicmp(s1,s2));
- }
- __except(1)
- {
- puts("exception[4].");
- }
- system("pause");
- }
复制代码 输出的结果是:- exception[1].
- exception[2].
- exception[3].
- -1
复制代码 可见如果输入指针无效,马上翻车。 |
|