- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在 Win32 编程中使用了一些 POD 结构。这些结构通常需要在使用前清零。
这可以通过调用 memset()
/ZeroMemory()
STRUCT theStruct;
ZeroMemory( &theStruct, sizeof( theStruct ) );
或按值初始化:
STRUCT theStruct = {};
虽然the two variants above are not equivalent in general :
如果是在 Win32 中使用的 POD 结构,它们看起来是等效的。
在任何情况下应该使用 memset()
/ZeroMemory()
而不是 Win32 POD 结构的值初始化?
最佳答案
我总是用:
STRUCT theStruct = {}; // for C++, in C use {0}
它更短、更标准,因此更优雅,我并不真正关心理论差异。我们在这里讨论的是具体操作系统的代码。
另一个优点是你也可以立即在第一个成员中设置结构大小,如下所示:
STRUCT theStruct = {sizeof(STRUCT)};
许多 Win32 结构要求您在第一个成员中设置大小。
关于c++ - 有什么理由更喜欢 memset/ZeroMemory 而不是 WinAPI 结构的值初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3853339/
为什么这个 ZeroMemory(&socketAddress, sizeof(Connection::socketAddress)); 可以工作,但这个不行? ZeroMemory(&Connect
我需要使用 SSE(首选 SSE2)的简单 ZeroMemory 实现有人可以帮忙吗?我正在通过 SO 和网络进行搜索,但没有找到直接的答案。 最佳答案 ZeroMemory() 或 memset()
我正在使用以下代码在 USB 驱动器中创建分区。 char str[128]; wsprintf(str,"\\\\.\\PhysicalDrive%d", i); hDevice = Cre
字符cMsg[128][12]; 与此相同: ZeroMemory(cMsg, sizeof(cMsg)); 比这个? for(i=0;i<128;i++) ZeroMemory(cMsh[i
基本上我是在 Mac 上编程,但我使用的是学校一个小组的源代码,其中包含“windows.h”。 我做了一些研究,显然没有 OSX 的该文件的副本。 我在这里的一个线程上看到了一个答案,它说可以制作一
我见过使用 ZeroMemory 的示例(主要用于 windows 和 directx 结构),但其他时候不使用它。我什么时候应该 ZeroMemory 一个结构? 最佳答案 ZeroMemory 简
我继承了下面这行代码: TCHAR temp[300]; GetModuleFileName(NULL, temp, 300); 但是,这会失败,因为前 3 个字节填充了垃圾值(尽管总是相同的,按顺序
在 Win32 编程中使用了一些 POD 结构。这些结构通常需要在使用前清零。 这可以通过调用 memset()/ZeroMemory() 来完成 STRUCT theStruct; ZeroMemo
当C标准库中已有memset及相关调用时,为什么Windows API中还存在ZeroMemory()等类似调用?我应该调用哪些?我猜答案是“取决于”。靠什么? 最佳答案 在 C 和 C++ 中,Ze
This MSND article说 SecureZeroMemory() 适用于在内存中存储了一段时间的敏感数据应该确保在不再需要时尽快覆盖的情况。 this SO question的答案解释为什么
我是一名优秀的程序员,十分优秀!