当前位置: 首页 > wzjs >正文

做视频网站视频短片wordpress手机版刷新

做视频网站视频短片,wordpress手机版刷新,济南网站建设维护公司,分销平台最近碰到了try 和 __try的区别的问题,经过实测与验证,发现在vs2019下,确实存在try无法捕获特定异常的问题,比如下面的代码: //以空格作为分割符的符号个数 //内存复制功能 // test1.cpp : 定义控制台应用程序的入口点…

最近碰到了try 和 __try的区别的问题,经过实测与验证,发现在vs2019下,确实存在try无法捕获特定异常的问题,比如下面的代码:

//以空格作为分割符的符号个数
//内存复制功能
// test1.cpp : 定义控制台应用程序的入口点。
//
#include <Windows.h>
#include <tchar.h>
#include <winternl.h>
#include <Shlwapi.h>
#include <iostream>int Sub1(const char* v1);
CHAR* Sub2(const CHAR* Source, size_t size);const char* x = "11 11 1 ssssssssssss";int MemStandardTry()
{//仍然使用C++标准的try{}catch(…){}, 但在编译命令行中加入 /EHa 的参数。这样VC编译器不会把try catch模块给优化掉了。//注意 / EHa的大小写try{BYTE* pch;pch = (BYTE*)00001234;   //给予一个非法地址 *pch = 6; //对非法地址赋值,会造成Access Violation 异常 }catch (...){std::cout << "catched MemStandardTry" << std::endl;}return 0;
}int MemWinTry()
{__try{BYTE* pch;pch = (BYTE*)00001234;   //给予一个非法地址 *pch = 6; //对非法地址赋值,会造成Access Violation 异常 }__except (EXCEPTION_EXECUTE_HANDLER){std::cout << "catched" << std::endl;}return 0;
}int main()
{MemStandardTry();MemWinTry();
// 	printf("%d\r\n", Sub1(x));
// 	printf("%d\r\n", Sub1(NULL));
// 	char* szChar = (char*)"11 11 1 ssssssssssss";
// 	printf("%s\r\n", Sub2(szChar, 50));return 0;}int Sub1(const char* v1)
{int length = -1;char* Buffer = NULL;__try{Buffer = (char*)malloc(strlen(v1) + 1);strcpy(Buffer, v1);char* pszToken = strtok(Buffer, "s");//在第一次调用 strtok 时,函数跳过前导分隔符(连在一起算一个)并返回指向在 strToken的第一个标记的指针,以空字符终止标记。//通过一系列 strtok 的调用,多个标记将被从 strToken 的其余部分拆开。 每个 strtok调用通过插入 null 字符在该调用返回 token 之后修改strToken。for (; pszToken != NULL; pszToken = strtok(NULL, "s"))length++;length++;}__except (EXCEPTION_EXECUTE_HANDLER){}free(Buffer);return(length);
}CHAR* Sub2(const CHAR* Source, size_t size)
{CHAR* v1 = NULL;__try{v1 = (CHAR*)malloc(size);memcpy(v1, Source, size);}__except (EXCEPTION_EXECUTE_HANDLER){free(v1);v1 = NULL;}return(v1);
}

在不做任何设置的情况下 MemStandardTry()在debug模式下可以捕获异常 但是release无法捕获,而MemWinTry()可以正常捕获异常。

但是实际情况是,当我们按照注释,设置 ,则发现try也可以在release模式下捕获该异常。

//仍然使用C++标准的try{}catch(…){}, 但在编译命令行中加入 /EHa 的参数。这样VC编译器不会把try catch模块给优化掉了。
//注意 / EHa的大小写

具体设置位置如下:

经过设置后,可以测试正确捕获异常。

进一步的内容,可以参考C++ 异常捕获 try 和 __try的区别_异常捕获的方法与其区别-CSDN博客,谨此纪念。

http://www.dtcms.com/wzjs/582692.html

相关文章:

  • 网站tkd优化网页设计与制作思政微课
  • 开个小网站要怎么做的基于 seajs 的高性能网站开发和优化实践_王保平(淘宝)
  • 企业网站推广优化微信商城在哪儿打开
  • 找兼职做网站建设万州网站推广
  • 百度网站优化软件宿迁市宿城区二手房最新消息
  • 非微信官方网页自己做的网站成功的网络营销事件有哪些
  • 自己做返利网站seo营销推广
  • 如何查到网站建设连云港专业网站制作
  • 数字币网站开发wordpress 优酷免广告插件
  • 网站的内链建设如何在服务器上做网站
  • 怎么做网站的百度收录网站部分乱码
  • 做网站后台怎么弄兰溪网站
  • 学网站制作多少钱网站费用标准
  • 纸业建站服务广东东莞网站建设
  • gg服务器租用网站上海市基础工程公司
  • 抵押网站建设方案2018淘宝客网站开发
  • 新手怎样做网站用php做的网站前后台模板
  • 彩票网站开发网页模板库
  • 哪些网站是php建站有哪些公司
  • 企业推广网站1号网站建设 高端网站建设
  • 资阳房地产网站建设内蒙古赤峰市信息网官网
  • 河北远策网站建设通江县网站建设
  • 2017做淘宝客网站还有吗抖音seo关键词优化怎么做
  • 商贸有限公司注销流程成都网站优化平台
  • 做ppt模板网站有哪些内容天津公司网站设计
  • 南山建网站祁东县建设局网站
  • 电子商务网站系统建设实训心得快速生成网页的软件
  • 网站代免费个人简历表格空白word
  • 什么源码做有趣的网站东莞公司注册要多少钱
  • 塑胶制品 东莞网站建设wordpress获取图片的绝对地址