我必须使用__try
和__except
语句来处理可能的内存errors
,如下所示:
#include <Windows.h>
#include <Shlwapi.h>
#include <stdio.h>
INT main()
{
CHAR a[5] = { 0 };
// literal string
CHAR *b = "hello12345";
__try
{
StrCpyA(a, b);
}
__except ((GetExceptionCode() == EXCEPTION_ARRAY_BOUNDS_EXCEEDED) ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
{
printf("Array bounds exceeded!");
}
return 0;
}
在运行时,使用__try
和__except
时程序意外停止并出现错误,并且__except()
块中没有发生异常!
顺便说一句,我正在使用Windows API typedef's
有什么建议吗?