Memset常用用法

论坛 期权论坛 脚本     
匿名技术用户   2021-1-7 06:30   35   0

今天在写程序的时候翻蠢写出了memset(a,1,sizeof(1))的代码,一直找不到错误在哪.后来输出中间结果发现数组并没有被初始化成为1,寻找原因,原来是因为被初始化成为了0x0101,并没有被初始化成为1.现总结一波Memset的常用的用法。

1.初始化字符数组,如下

char c[10];
memset(c,0,sizeof(c));
memset(c,1,sizeof(c)); 

2.初始化int类型数组,如下

int a[10];
memset(c,0,sizeof(c));
memset(c,-1,sizeof(c));
memset(c,1,sizeof(c));//错误用法
3. 初始化结构体,如下

struct  Test{
         int a;
         int b;
 };
struct Test t;
memset(&t,0,sizeof(t));   
4.初始化含有指针的结构体时可能会造成内存泄露,如:

struct Test{
      int a;
      int* b;
}
struct Test t;
t.b=(int*)malloc(sizeof(int)*10);
memset(&t,0,sizeof(t));
这样初始化并不会初始化数组b的每个成员,只会将b初始化为0,而b已经分配了内存,会造成内存泄露


综合来说,memset是以字节为单位分配内存,这样比我们手动初始化快的多,但是要注意一些易错的地方。



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP