【发布时间】:2014-02-07 06:59:11
【问题描述】:
我需要在声明后将结构数组设置为 0。我可以这样做
main()
{
struct data dataarray[100];
memset(dataarray,0x00,sizeof(dataarray));
}
但是如果我像下面那样做呢
main()
{
struct data dataarray[100] = {0}
}
如果我使用 memset() 会花费太多时间来完成。我需要优化这个功能。那么我可以使用第二种方法将内存设置为 0 吗?第二种方法是否保证所有内存都初始化为0?
【问题讨论】:
-
如果设置为零“花费太多时间”,您是否考虑过是否需要初始化变量?也许你会立即覆盖它们?
-
我需要减少将内存设置为零的时间
-
使其全球化是更快的方式! .你的结构数据内容是什么?填充可能会及时发挥作用。
-
@Karthik 不,让它获得 static storage duration 可能会也可能不会使代码更快。这完全取决于在启动时设置 .bss 的复制代码的实现是否与 memset 不同。所以这取决于系统。如果您从整个程序的执行时间来看,从开始到结束,我不太可能通过使用静态存储而不是自动分配零初始化变量来获得任何性能提升。