// ConsoleApplication10.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <windows.h> using namespace std; BOOL bTest = false; void Get() { char *p = NULL;//2 __try{ if (!bTest){ bTest = true; strcpy(p, "123");//3
//下面不被执行
//...
} else{ p = new char[100]; strcpy(p, "123"); } } __finally{//在处理 if (p){//5,delete不执行 delete[]p; } } } void Test() { int i = 0; while (i++ < 2){ __try{ Get();//1 } __except (EXCEPTION_EXECUTE_HANDLER){//4 printf("异常出现,但是不作处理\n");//6 } } } int _tmain(int argc, _TCHAR* argv[]) { Test(); return 0; }
第一次循环如上。
第二次循环如下:
// ConsoleApplication10.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;
BOOL bTest = false;
void Get()
{
char *p = NULL;//2
__try{
if (!bTest){
bTest = true;
strcpy(p, "123");
}
else{
p = new char[100];
strcpy(p, "123");//3
}
}
__finally{
if (p){
delete[]p;//4
}
}
}
void Test()
{
int i = 0;
while (i++ < 2){
__try{
Get();//1
}
__except (EXCEPTION_EXECUTE_HANDLER){
printf("异常出现,但是不作处理\n");
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Test();
return 0;//5
}
原文:http://www.cnblogs.com/qq76211822/p/4926429.html