Memset常用用法

    xiaoxiao2021-12-14  20

    今天在写程序的时候翻蠢写出了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是以字节为单位分配内存,这样比我们手动初始化快的多,但是要注意一些易错的地方。

    转载请注明原文地址: https://ju.6miu.com/read-971470.html

    最新回复(0)