memset和ZeroMemory

2024-01-15 03:58
文章标签 memset zeromemory

本文主要是介绍memset和ZeroMemory,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 
查看文章
  
(转)memset和ZeroMemory
2009年10月29日 星期四 09:50
1. memset就是将一个内存区全部设置成你指定的值。以字节为单位。  
ZeroMemory相当于memset(buffer,0,length)中参数2设置成0。

2. memset有个潜在的危险,它的后两个参数类型相同,但是含义大相径庭,如果不慎写反了编译时也不容易查出来;相比起源于Berkerly网络编程代码早期的bezro不是ANSIC函数,但它的两个参数更容易记忆。
在windows平台下,对于数组或纯结构使用ZeroMemory是安全的,对于类,则使用构造函数,不要调用ZeroMemory。

3. ZeroMemory是微软的SDK提供的,
memset属于C  Run-time  Library,
所以ZeroMemory只能用于Windows系统,memset可用于别的系统。ZeroMemory是一个宏,只是用于把一段内存的内容置零,内部是用memset实现的,memset可将内存置成别的字符。
如果你的程序是Win32程序而且不想连接c运行时库,那就用ZeroMemory,如果需要跨平台,那就用memset

这篇关于memset和ZeroMemory的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/607570

相关文章

C++ - memset的效率和源码分析

void *memset(void *s, int ch, size_t n); 作用:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作。 不知道有没有像我一样把memset当作万能的初始化工具,例如: int arr[n]; memset(arr,1,n*sizeof(int)); 这样得到的ar

memset初始化数组易错点

一、memset(a, 1, sizeof a); 如下代码,不少同学会以为a[]被初始化为1,其实不是的,是被初始化为16843009,为什么是这个数呢? #include <bits/stdc++.h>using namespace std;int n, a[14];int main(){memset(a, 1, sizeof a);for(int i=0; i<14; ++i){

bzero和memset函数

bzero bzero() 函数是一个在 C 语言中用于将内存块的前 n 个字节清零的函数。它的原型定义在 string.h 头文件中,其函数原型为 void bzero(void *s, int n);,其中 s 是指向要清零的内存区域的指针,n 是需要清零的字节数。 这个函数是非标准的,意味着它并不在 ANSI C 标准中定义,但它在一些系统和编译器中是可用的,比如 Linux 的 GCC

memset函数注意事项

memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的。     其原型是:void* memset(void *_Dst, int  _Val, size_t _Size);     使用时在文件头加上#include "stdlib.h" 。     _Dst是目标起始地址,_Val是要赋的值,_Size是要赋值的字节数 。   例1:        char str

memset、memcpy等mem家族函数

整理一下mem家族函数。 文章目录 memsetmemcpy memset 这是我最喜欢的函数。初始化为非零的数,或者中途使用的时候直接全部重置。 memcpy 我也喜欢这个函数,整段复制,终于不用for循环挨个复制了。 char *s = "GoldenGlobalView";char d[20];memcpy(d, s + 3, 4); //从第13个字符(V)开始复

【c++】10. memset()、【strcpy_s()、memcpy_s()】、【strcpy(),memcpy()】

选择使用【strcpy_s、memcpy_s】还是选择【strcpy,memcpy】? memset()的用法 memcpy_s,strcpy_s函数明确的指定了目标内存的大小,能够清晰的暴露出内存溢出的问题,而普通的memcpy、strcpy则不会。 为了保证内存拷贝有足够的空间,防止笔误,【尽量使用memcpy_s代替memcpy】。 (1)memcpy_s()的用法: errno_t

C++复制内存(memcpy)/设置内存(memset)

一:memcpy函数,复制内存 注意是memcpy,不是memccpy int a[5]{11,22,33};int* b = new int[5];// 从内存a处开始,复制20个字节,到指针b处memcpy(b,a,20);for (int i = 0; i < sizeof(a)/4;i++) {std::cout << b[i] << std::endl;} 二:memse

memset初始化类 在调用虚函数时的出错分析

偶尔 在群里看见 一段代码的问题,自己敲了下 试了试 总结一下;代码: #include <cstring> #include <iostream> using namespace std;class Parent{public:Parent(){}virtual void output();};void Parent::output(){cout << " Parent " <<

memset(a, 0xf, sizeof(a))

学了429 搞混了 记得是0xf 不是0x7fff ffff 另外 3f3f3f3f也可

关于memset()函数的一点解读

关于memset()函数的一些解读,以前总以为,只要是个数组,用上memset()就能对其赋予想要的值,可是总是会有一些意想不到的错误!这或许就是所说的想当然吧! 这个函数在"string.h"这个头文件中 1)用于整型的数组初始化;用于-1,0可以得到想要的结果,当为其它的值的时候,就会得不到想要的结果 #include <stdio.h>#include <string.h>i