1、http://mindhacks.cn/2012/08/27/modern-cpp-practices/
看到有关于ScopeGuard的描述,真心大神啊!一定要好好琢磨一下。
2、memset()方法,void *memset(void *s,int c,size_t n)
总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。
注意这里是 首n个字节的值,所以sizeof取总长度
作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
注意事项:
1、如果字符数组初始化或置某一值时,用法:
char a[5];
memset(a,0,5);
2、对于字符串数组来说,是不可以修改字符串的内容,如
char *a=“adgfa”;
memset(a,0,strlen(a)-1);//此时会产生访问冲突,因为:a是字符串常量,存储在内存中的静态存储区域(属于不可写空间)
3、如对int类型数组进行置零操作(注意:仅限于置零操作,不能进行置其他值的操作),需要这么用,如
int a[5];
memset(a,0,sizeof(a));
4、memset可以对结构体变量或结构体数组进行初始化处理,如:
|
struct
{ char
int
int
}; |
对于变量
|
struct
|
1)、一般情况下,清空stTest的方法:
|
stTest.csName[0]={ '\0' }; stTest.iSeq=0; stTest.iType=0; |
2)、用memset就非常方便:
|
memset (&stTest,0, sizeof ( struct
|
3)如果是数组,方法如下:
|
struct
|
|
memset (TEST,0, sizeof ( struct
|