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

网站建设专家证书学开网店哪个培训机构好正规

网站建设专家证书,学开网店哪个培训机构好正规,网站首页滚动大图怎么做,深圳龙岗横岗疫情通报最近遇到个比较经典的案例,在c#中调用yara进行文件检测,yara是c编写的一个非常强大库,github有个大佬用c#对其进行了封装,使其能在跨平台下,只需编译yara的so或dll就能直接跑。但总是在Release版本下时不时就崩溃&…

最近遇到个比较经典的案例,在c#中调用yara进行文件检测,yara是c编写的一个非常强大库,github有个大佬用c#对其进行了封装,使其能在跨平台下,只需编译yara的so或dll就能直接跑。但总是在Release版本下时不时就崩溃,而且崩的位置非常奇怪,在Debug版本下不会崩,分析了好久终于找到了原因

https://github.com/airbus-cert/dnYara

然后它提供了官方demo,看起来是没有问题的,但实际隐藏了个非常难排查的bug。

根据yara的调用说明,需要做全局初始化,而dnyara把初始化封装在了YaraContext中,并实现了Idisposable。可以看到在它的demo中,对ctx没有任何的引用,成为了一个悬置的变量。在下面Compile或者ScanFile的时候,就总是报内存访问异常。

起初还以为是yara c代码上的问题,但看了下它源码,发现这一段调用,没有明显的逻辑或者内存上的错误,那么就往.net上排查。突然想到有个GC线程,然后猜测是gc线程在函数内部对ctx进行了回收,在Release下,回收的机制可能更快速,因为yara的规则编译和扫描都是比较耗时的。顺便在chatgpt上进行了些求证

证明我的猜测基本是对的,GC的行为受编译器优化,而未引用变量会被编译器标记,导致gc在函数体内部进行回收。 这个地方显然是dnyara封装的锅,正确的封装方式为,不实现Idispose,写一个Release函数,让别个在外面手动调用。这样既保证了,释放处对ctx有引用不会被gc回收,又在没有引用的情况下,被回收也不会造成c库的内存错误。如果不改dnyara源码,随意增加一处对ctx的强引用就可以避免这个问题了

http://www.dt0577.cn/news/15237.html

相关文章:

  • 珠海响应式网站建设衡阳seo优化首选
  • 做网站阿里云记录值怎么填徐州seo代理计费
  • 嘉兴企业网站模板建站西地那非片多少钱一盒
  • 3d网站建设制作网络营销名词解释
  • 深圳市福田建设股份有限公司网站北大青鸟软件开发培训学费多少
  • 网站图标用代码代替软文推广文章
  • 淘宝联盟链接的网站怎么做移动慧生活app下载
  • 深圳网站建设 设计贝尔保定seo推广
  • 便宜做网站的公司怎么优化自己网站的关键词
  • 网站建设的发展历程站长工具网站排名
  • 全屋定制加盟哪个品牌好seo博客优化
  • 可以帮忙做网站做公司前端培训班一般多少钱
  • 浙江嘉兴seo网站优化推广手机百度账号登录个人中心
  • 怎们自己做网站seo内部优化具体做什么
  • 做电影网站赚钱优化设计六年级上册数学答案
  • 重庆城乡建设信息网官网seo排名优化点击软件有哪些
  • 微信群投票网站怎么做成品网站货源1
  • 网站空间容量国外电商平台有哪些
  • 做任务领q币网站爆款引流推广软件
  • 烟台网站推广培训seo去哪家机构最好
  • 客源通app下载关键词优化是怎么做的
  • 保山网站建设优化做一个企业网站需要多少钱
  • 南京广告公司一览表网站优化要做哪些
  • 游戏网站制作教程产品推广宣传方案
  • 怎么开个人网站赚钱百度指数查询官方下载
  • 效果营销型网站建设宁波seo怎么做优化
  • xampp做的网站能搜索吗惠州seo网站推广
  • 福州企业网站建设百色seo关键词优化公司
  • wordpress 前台发文章郑州seo网站关键词优化
  • 无网站可以做cpc吗点击器 百度网盘