100分公开募捐和个人求助的区别,fillchar 和 zeromemory 的区别

清空不过就是填充空字符(#0: 编号为 0 嘚字符), 说来说去是一回事.

}

2、ZeroMemory是一个宏只是用于把一段内存的内容置零,内部其实是用 
memset实现的而memset除了对内存进行清零操作,还可以将内存置成别的字符

3、如果程序是Win32程序而且不想连接c运行时庫,那就用ZeroMemory如果需要跨平台,那就用memset

所以如果ZeroMemorymemset用于清零操作,其本质是一样的

1、ZeroMemory会将结构中所有字节置0,而“={0}”只会将成员置0其中填充字节不变。

2、一个struct有构造函数或虚函数时ZeroMemory可以编译通过,而“={0}”会产生编译错误其中,“={0}”的编译错误起到了一定的保护作鼡
因为对一个有虚函数的对象使用ZeroMemory时,会将其虚函数的指针置0这是非常危险的(调用虚函数时,空指针很可能引起程序崩溃)

因此,在windows平台下数组或纯结构使用ZeroMemory是安全的,而类(class)就使用构造函数进行初始化不要调用ZeroMemory。


另外如果一个类的结构中包含STL模板(Vector、List、Map等等),那么使用ZeroMemory对这个类的对象中进行清零操作也会引起一系列的崩溃问题(指针指向内存错误、迭代器越界访问等)
所以,再次强烈建議:类(class)只使用构造函数进行初始化不要调用ZeroMemory进行清零操作。

}

我要回帖

更多关于 公开募捐和个人求助的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信