{0}花括号清零 VS memset(dst, 0 , sizeof(dst_type))清零
============================================================
结论
在对C语言一个结构体或一块连续内存清零时,如果是在编译时,就可以确定下来类型和大小的内存区域,特别是小块内存,无疑用**{0}花括号清零**,将目标内存清零是最可取的!
为什么呢?
- 美学角度
char dst[256] = {0};
VS
char dst[256];
memset(dst, 0, sizeof(dst));
==> {0}花括号清零无疑更简洁,而且给编译器优化留了充分空间
- API角度
{0}花括号清零:在编译器的指导下,基本上按照机器字的单位进行清零
在x86/64的环境下,编译为64位的程序,对于
char example[13] = {0};,使用素数作为长度的连续内存,是按照 ** 8 + 4 + 1 ,使用汇编mov***指令进行清零
如果长度比较长的连续内存,除内存的边角料外,是按照 机器字 ,使用汇编rep stos指令进行清零大家可自行验证
C语言内存清零:{0}

最低0.47元/天 解锁文章
31万+

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



