c++ - 在 C++ 中初始化数组

标签 c++ c performance arrays

我看到的每个地方都有人大声争论未初始化的变量是不好的,我当然同意并理解为什么——但是;我的问题是,是否存在您不想这样做的情况?

例如取代码:

char arrBuffer[1024] = { '\0' };

将整个数组设为 NULL 是否会对性能产生影响,而不是使用数组而不初始化它?

最佳答案

我假定堆栈初始化,因为静态数组是自动初始化的。
G++输出

   char whatever[2567] = {'\0'};
   8048530:       8d 95 f5 f5 ff ff       lea    -0xa0b(%ebp),%edx
   8048536:       b8 07 0a 00 00          mov    $0xa07,%eax
   804853b:       89 44 24 08             mov    %eax,0x8(%esp)
   804853f:       c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
   8048546:       00 
   8048547:       89 14 24                mov    %edx,(%esp)
   804854a:       e8 b9 fe ff ff          call   8048408 <memset@plt>

因此,您使用 {'\0'} 进行初始化并完成对 memset 的调用,所以是的,您的性能受到了影响。

关于c++ - 在 C++ 中初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1770081/

相关文章:

c++ - 创建一个 Fast Sin() 函数来提高 fps ?快速 sin() 函数?

我可以排除SIGBUS由 "minor page fault"引发吗? (内核日志没有分配失败)

sql - 使用 SQL INNER JOIN 有什么不好

sql - 与 VARCHAR(450) 相比,NVARCHAR(450) 的复杂 LIKE 查询速度极慢

C++ 模板化工厂构造函数/反序列化

c++ - 将输入流从 PortAudio 馈送到 webrtc::AudioProcessing

c++ - 存储结构的动态数组

python - 有效计算均值和中位数

c++ - IplImage 在 openCV C++ 中打开图像

c - 将结构指针传递给函数时出现错误 "ISO C forbids forward parameter decleration"?