ZeroMemory

article/2025/11/4 22:07:02

ZeroMemory() ZeroMemory宏用0来填充一块内存区域。

  为了避免优化编译器的意外的影响,请使用SecureZeroMemory函数。

  void ZeroMemory(

  PVOID Destination,

  SIZE_T Length

  );

  参数:

  Destination :指向一块准备用0来填充的内存区域的开始地址。

  Length :准备用0来填充的内存区域的大小,按字节来计算。

  返回值:无

  ZeroMemory 只是将指定的内存块清零.

  使用结构前清零, 而不让结构的成员数值具有不确定性, 是一个好的编程习惯

  备注:

  这个函数被定义为RtlZeroMemory宏。至于更多信息,请查看Winbase.h与Winnt.h这两个头文件。

 

 

为什么Microsoft code sample倾向使用ZeroMemory而不是{0}?

 

这是最近看的一片短文的title,当时就很好奇。
经 常查阅MSDN的程序员都会有这个印象,微软code sample中常见的是ZeroMemory,而不是语言提供的“{0}”清零功能(不过,我一直也没有问个why)。c++语法中声明对数组或纯结构 (struct),可以使用例如SPerson sTest = {0}; 来将所有成员置0.

那篇文章的解释是,Microsoft使用ZeroMemory会更clear,因为“= {0}” 这样的语法有些生僻,不是所有人都可以一下子明白。

实际上,两者还是有一些区别。
其一,ZeroMemory会将结构所有字节置0,而={0}只会将成员置0,其中padding字节不变。

其二,但一个struct有构造函数或虚函数时,ZeroMemory可以,而={0}会编译不过。显然,后者起到了一些保护作用,因为对一个有虚 函数的对象使用ZeroMemory时,会将其虚函数的指针置0,这是非常危险的,因为调用虚函数时,程序显然会crash。参看如下代码:

struct SPerson
{
    
//SPerson(){     }
    char c;
    
float s;
}
;

class CTestVirtual
{
public:
     CTestVirtual()
    
{
     }


    
virtual int Draw()
    
{
        
return 10;
     }


    
int a;
}
;

void Test()
{
    
char sztmp[20];
     ZeroMemory(sztmp,
sizeof(sztmp));

     SPerson sTest
= {0};
    
int i = sizeof(SPerson);

    
//CTestVirtual otv = {0};    //Compire error
     CTestVirtual tv;
     ZeroMemory(
&tv, sizeof(tv));
     tv.Draw();        
//As it is an object, don't use the virtual function pointer, so don't crash.
     CTestVirtual *pTv = &tv;
     pTv
->Draw();    //Crash!!!
}


因此,在windows平台下,对于数组或纯结构使用ZeroMemory是安全的,对于class,则使用构造函数,不要调用ZeroMemory。如果有跨平台要求,使用={0}则可以减少一些工作。


http://chatgpt.dhexx.cn/article/7ceUJ2Pw.shtml

相关文章

长文件名和短文件名

2019独角兽企业重金招聘Python工程师标准>>> 文件命名时有一个8.3规则 8是指文件名,就是******.XXX里的***意思是这个部分不能超过8个字符,在DOS里,如果超过8个字符了是不会被识别的.后面的XXX是扩展名,也不一定非得是…

关于Windows10 文件名最大长度260

直接上官方文档: Maximum Path Length Limitation - Win32 apps | Microsoft DocsMaximum path length limitation.https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabspowershell但是文档中关于文件全路径最长260的设定&a…

自定义文件名长度,随机重命名文件名称

一些文件名称可能太长,很多人问如何自定义长度,随机重命名出每个文件名称呢?如何用第三方的工具来批量操作呢?在众多的文件批量重命名软件中【文件批量改名高手】算是操作简单。易懂的软件了,下面一起来操作步骤吧。 …

windows文件名太长(超255字符)无法重新命名

问题描述: 最近下载了一个mp4课件,文件名称太长,试过网上注册表与组策略方法来重命名,均无效 [尝试的方法链接] 解决措施: 用vscode编译器打开文件的上一级目录在vscode的资源编译器中修改对应文件的文件名退出vscod…

linux 查看文件名和路径最大长度限制

文件查看方式 cat /usr/include/linux/limits.h命令查看方式 文件名最大长度限制 getconf NAME_MAX /usr路径最大长度限制 getconf PATH_MAX /usr

[WinError 206] 文件名或扩展名太长(组策略值修改 解除windows文件名 字符长度限制)

Windows 历来将路径长度限制为 260 个字符。这意味着比这更长的路径将导致编程语言相关路径函数无法解析并且会导致错误。 在最新版本的 Windows 中,此限制可以扩展到大约 32,000 个字符。 解决办法: windows键R键打开运行窗口,再输入regedi…

【python量化】统计套利之配对交易策略实现(基于python)

关于做统计套利所需要的基本知识在前面也整理过了: 时间序列分析之ADF检验 时间序列分析之协整检验 时间序列分析之相关性 下面用python实现一个简单的配对交易策略: 目录 一、交易对象选取 相关性检验 ADF检验 协整检验 二、主体策略 投资组合…

使用数据驱动进行配对交易:简单交易策略

作者:chen_h 微信号 & QQ:862251340 微信公众号:coderpai 使用数据驱动进行配对交易:简单交易策略 配对交易是一个纯基于数学分析的一个非常好的例子。接下里的文章,我们将演示如何去利用数据来创建一个自动化…

【Python】使用tushare完成配对交易策略

tushare ID:495023 分析对象:茅台&五粮液,获取上述股票2020/1/1到2021/12/31的股票数据, 1.可视化价差spread、z-score 2.产生并可视化交易信号:上升交易信号、下降交易信号 3.计算策略的累计效益,可视…

量化投资实战(二)之配对交易策略---最短距离法

点赞、关注再看,养成良好习惯 Life is short, U need Python 初学量化投资实战,[快来点我吧] 配对交易策略实战—最短距离法 基本流程 配对组合 --> 计算价差 --> 决策标准 --> 确定头寸 --> 平仓获利 一、股票对的选取 读取数据 import p…

配对交易(一):期货品种相关性研究

配对交易定义 配对交易是一种基于数学分析交易策略,其盈利模式是通过两只证券的差价(spread)来获取,理论上可以做到和大盘走势完全无关。但其本质上是一种统计套利,也具有一定的风险性。 基本原理 配对交易的基本原理…

高频交易——当期货配对交易加入了止损

高频交易——当期货配对交易加入了止损 idea数据介绍配对交易寻找配对标的相关性协整性 策略构建回测结果 总结核心代码示例 idea 目前在配对交易的识别上比较有代表性的是根据二者的相关性来判断,也有根据标的之间协整性来进行选择的,在这里我们结合两…

量化投资实战(三)之配对交易策略---协整法

点赞、关注再看,养成良好习惯 Life is short, U need Python 初学量化投资实战,[快来点我吧] 配对交易策略实战—协整法 基本流程 配对组合 --> 计算价差 --> 决策标准 --> 确定头寸 --> 平仓获利 案例描述 本案例以上证50股票数据为对象、…

原创 | 以ETF为例——配对交易Python源码全公开

配对交易是指八十年代中期华尔街著名投行Morgan Stanley的数量交易员Nunzio Tartaglia成立的一个数量分析团队提出的一种市场中性投资策略。 在实际操作中,其执行过程可以简单地描述为:投资者首先选择相互匹配的两个资产,当配对资产价格差异增…

配对交易之统计套利配对:协整(cointegration)

Engle和Granger观察到了一个相当有趣的现象。尽管两个时间序列是非平稳的,但在某些情况下,两者的特定线性组合实际上是平稳的;也就是说,这两个序列在某种程度上是步调一致的。Engle和Granger创造了“协整”(cointegrat…

【量化】相关系数进行配对交易

根据统计数据,对价差进行买卖,而不去做股票本身趋势的预测,是否能做到旱涝保收呢。下面是利用股票对之间的相关系数来进行配对交易的研究。 1,首先想到利用统计套利,可能会想到两只股票的相关系数是否会让两只股票的走…

USDCNY--USDCNH 配对交易___境内及离岸人民币即期的协整关系及配对交易策略分析

由于中国没有实现资本项下的可自由兑换,目前人民币的外汇交易存在境内及境外两个市场。在境内交易的CNY和境外交易的CNH,本质都是人民币,从这个角度上看,两者具有高度相关性。但是由于两者的市场形态、监管细节、参与机构、流动性…

沪深300配对交易

目录 获取数据相关系数三级目录协整检验聚类算法进一步筛选回测 获取数据 通过pandas_datareader来获取沪深300的股票数据,为此,先从网上爬虫得到沪深300的股票名单 import os import pandas as pd import pandas_datareader as web import pickle imp…

配对交易策略设计

可交易的一个关键要求是两个股票的对数价格序列之间存在均衡关系。 而均衡关系由两个值描述:协整系数以及均衡值。一旦确定这两个值,它们就可以用来构建两种股票的对数价格的线性组合,即所谓的价差。配对交易是对价差均值回归特性的押注。当…

配对交易之统计套利配对:介绍

现在让我们来解释一下配对交易背后的想法。从估值角度来看,投资关心的问题是卖出高估值的证券,买入低估值的证券。然而,只有当我们也知道证券的真正价值时,才有可能确定证券被高估或低估。但是,这很难做到。配对交易试…