加个前提:本文对应Windows下编程环境。
使用memset函数将内存块置0是完全没有问题。memset的好处是跨平台比较容易,可是C/C++跨平台就是梦魇。在使用memset的时候有个小地方需要注意,W.Richard Stevens在《UNIX网络编程》中提到void *memset(void *dest, int c, size_t count)的后两个参数容易写反,而且在编译时无法发现。
ZeroMemory宏,在底层就是由memset实现的。只是ZeroMemory易读性更好,更加健壮。或者说看起来更cool、更professional。在微软平台下的程序,推荐使用ZeroMemory。
SecurZeroMemory函数,可以看作是在安全方面加强版的ZeroMemory。细心的读者是否注意到ZeroMemory是宏,而SecurZeroMemory是函数?ZeroMemory在一定的编译优化条件下,使用ZeroMemory置0以后的内存块如果再也不被引用,ZeroMemory有可能会

本文介绍了在Windows编程环境下,C++中三种内存块置0的方法:memset、ZeroMemory和SecurZeroMemory。memset是跨平台的选择,但要注意参数错误;ZeroMemory提供更好的可读性;SecurZeroMemory则在安全性上更胜一筹,尤其适用于处理敏感数据。避免使用'={ 0 }',可能存在内存对齐问题。对于敏感信息,推荐使用SecurZeroMemory确保数据安全。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



