EXCEPTION_EXECUTE_HANDLER (1) 异常已经被识别,也即当前的这个异常错误,系统已经找到了并能够确认,这个__except模块就是正确的异常处理模块。控制流将进入到__except模块中,当except代码块运行结束后,系统会认为异常已经处理,于是允许应用程序继续执行。
全局展开 异常产生,系统夺回控制权,搜索与try块匹配的except块。因为F1中的try块匹配的是finally,于是系统调用栈中向上搜索到另一个try块,当异常过滤程序计算结果为EXCEPTION_EXECUTE_HANDLER,系统必须进行全局展开。马上在发生异常出的finally块中开始全局展开。寻找所有未完成的finally块的try块
如果一个异常发生在try、finally块中,且在其上层没有try、except,进程立刻终止。即全局展开不会发送,finally块也不会执行。
在finally中放入return可以阻止全局展开进行
//以空格作为分割符的符号个数 //内存复制功能 // test1.cpp : 定义控制台应用程序的入口点。 // #include <Windows.h> #include <tchar.h> #include <winternl.h> #include <Shlwapi.h> #include<iostream> int Sub1(const char* v1); CHAR* Sub2(CHAR*Source, size_t Destination); const char* x = "11 11 1 ssssssssssss"; int main() { printf("%d\r\n",Sub1(x)); printf("%d\r\n",Sub1(NULL)); printf("%s\r\n", Sub2("11 11 1 ssssssssssss",50)); return 0; } int Sub1(const char* v1) { int len