草庐IT

memsetting

全部标签

c++ - C memset 似乎没有写给每个成员

我写了一个小的坐标类来处理int和float坐标。templateclassvector2{public:vector2(){memset(this,0,sizeof(this));}Tx;Ty;};然后在main()中我做:vector2v;但是根据我的MSVC调试器,只有x值被设置为0,y值没有改变。我以前从未在模板类中使用过sizeof(),这可能是导致问题的原因吗? 最佳答案 不,不要使用memset——它会将指针的大小(在我的x86Intel机器上是4个字节)从this指向的位置开始的字节清零.这是一个坏习惯:当对复杂类使

c++ - 如何 memset 一个 bool 数组?

void*memset(void*dest,intc,size_tcount)第三个参数是数组中的字符数或字节数。你如何memset一个bool数组,比如boolbArray[11]?MSDN说:“安全说明-确保目标缓冲区有足够的空间容纳至少count个字符。” 最佳答案 std::fill()应尽可能使用memset()。std::fill(std::begin(bArray),std::end(bArray),value);如果bArray是指针,则应使用以下内容:std::fill(bArray,bArray+arraySiz

c++ - 为什么 memset sockaddr_in 为 0

是否有明确的指南说明我们必须出于特定原因将sockaddr_in结构初始化为零?//IPv4AF_INETsockets:structsockaddr_in{shortsin_family;//e.g.AF_INET,AF_INET6unsignedshortsin_port;//e.g.htons(3490)structin_addrsin_addr;//seestructin_addr,belowcharsin_zero[8];//zerothisifyouwantto};每当我查看真实代码或示例或书籍时,它总是具有类似于以下的代码结构:structsockaddr_infoo;m

c++ - 在 C++11 中,您能否始终(安全地)用空初始化器替换 memset() 初始化?

我经常在代码中遇到使用memset手动零初始化的POD结构,如下所示:structfoo;memset(&foo,0,sizeof(foo));我检查了C++11标准,它说:“初始化器是一组空括号的对象,即(),应该被值初始化。”已关注通过:“对T类型的[podstruct]进行值初始化意味着......该对象是零初始化的。”那么...这是否意味着您可以始终安全地将上述代码压缩为以下代码:structfoo{};并且有一个保证初始化的结构,就像你调用了memset(&foo,0,...)一样?如果是这样,那么一般来说,您能否像这样使用空初始化器安全地初始化任何东西:SomeUnknow

c++ - 在 memset 等上使用结构初始化 ({...}) 是否更可取/可以?

代码:WINDOWPLACEMENTwplcmt={sizeof(WINDOWPLACEMENT)};看起来比下面干净多了:WINDOWPLACEMENTwplcmt;memset(&wplcmt,0,sizeof(WINDOWPLACEMENT));wplcmt.length=sizeof(WINDOWPLACEMENT);这个东西的汇编输出也很不错,对于更长的结构,MSVC甚至使用memset而不是xoreax,eax和mov的。从标准的角度来看,它看起来也不错。但我仍然害怕结构未紧密包装的边界情况,比如#pragmapack(128),Windows突然决定对该结构进行memcm

c++ - 当安全不是问题时,有什么理由使用 SecureZeroMemory() 而不是 memset() 或 ZeroMemory() 吗?

ThisMSNDarticle说SecureZeroMemory()适用于在内存中存储了一段时间的敏感数据应该确保在不再需要时尽快覆盖的情况。thisSOquestion的答案解释为什么这会有所作为。现在使用SecureZeroMemory()来初始化每个内存块有什么意义吗?例如,在一个项目中,我看到如下代码:ICONINFOii;::SecureZeroMemory(&ii,sizeof(ICONINFO));if(::GetIconInfo(hIcon,&ii)){//dostuff,then//releasebitmapsif(ii.hbmMask)::DeleteObject(

一次搞定memset函数!

前言:今日份知识:memset函数!!!本周第三更!话不多说,速速食用!什么是memset函数?memset,即memoryset翻译过来就是内存设置。官方描述:memset函数是用来将指定内存设定为指定的字符。它的参数有三个,dest就是目标内存块(一定要输入地址),c是指定的内容,count是字节数。它的头文件是memory.h或者string.hmemset函数如何使用?看实操:上面是简单地对字符串使用memset函数。是为了让大家先简单了解一下memset如何使用。下面将会说一些进阶知识。memeset的进阶知识例一:在此程序中我们对于char,short,int类型的数组都设定内容为

strtok,strerror,memcpy,memmove,memcmp,memset详细解析及模拟实现

​​​​​​​🐶博主主页:@ᰔᩚ.一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章🔥座右铭:“不要等到什么都没有了,才下定决心去做”🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀目录🐰strtok🐰strerror🐰memcpy🐰模拟实现memcpy🐰memmove🐰模拟实现memmove🐰memcmp🐰memset🐰strtokstrtok用于字符串的拆分,引用头文件为#includestrtok的原型:char*strtok(char*str,constchar*delimiters);str:字符串的首地址 delimiters:分隔符

c++入门必学库函数 memset

一、memset的介绍memset是c语言的string.h里的字符串初始化函数,但是也经常用于普通数组的初始化,它的优点就是简单易用,一行代码就可以初始化数据了,当然这完全可以用for循环赋值代替的。二、memset的基本用法函数模板:memset(数组首地址,初始值,初始化大小)数组首地址:数组的首地址是可以直接用数组名代替的初始值:初始值的范围是0到127,因为memset是以字节为单位对数组进行赋值的,一个字节8位,所表达的值就是0到127初始化大小:初始化大小用一个整数表示,表示需要初始化多少字节,通常用sizeof(数组首地址)来获得需要初始化的大小看着有点难懂没关系,看完示例代码

c - 我需要在 Swift 中 memset 一个 C 结构吗?

AFAIK,在swift中,调用类/结构的默认初始化程序会将所有内容初始化为0,nil。在C(例如套接字编程)中,有时memset用于在使用结构之前将所有内容设置为0。我是否也需要在swift中使用memset或者我写的方式就可以了吗?(顺便说一句,在这种情况下使用memset因为hints应该设置为0除了以下2个参数。非0(垃圾等)会对res当调用getaddrinfo时。C:structaddrinfohints,*res;intstatus;memset(&hints,0,sizeofhints);hints.ai_family=AF_UNSPEC;hints.ai_sockty