1.问题
char * str="Astring";
strrev(str);
上面这两行代码,第一眼感觉是没有错的,而且MSDN里面也是这样写的。编译能够通过,但是运行起来就会报错,提示Access Violation(访问越界)。
MSDN里面的代码精简一下大致是这样:
/*++ cstr.cpp
*
*version:1.1
*created:2011-08-14 21:30
*purpose:show AV error
*
--*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
void _tmain()
{
_TCHAR* str=_T("Astring");
_tprintf(_T("%s reversed is '%s'\n"),str,_tcsrev(str));
system("pause");
}
这个例子在msdn中本来是用来说明tchar.h对generic-text的支持,然而在使用_tcsrev()对str进行反转时,却出现了Access Violation错误。
仔细再查看一遍sample代码,发现它的后缀名是.c,而笔者编译时是.cpp,问题是否出在这里? 修改上面的文件为cstr.c,再编译,编译成功,可是运行起来,问题依旧。
2.分析
编译能够通过,但