MSVC(和 icc)自动调用 memset C++
Posted
技术标签:
【中文标题】MSVC(和 icc)自动调用 memset C++【英文标题】:MSVC (and icc) automatically calling memset C++ 【发布时间】:2019-06-08 13:15:43 【问题描述】:我大量使用大数据结构,每次创建(通过放置新)它时,编译器都会自动添加“memset”调用。即使在发布模式下,即使我将 /SDL 和 /GS 设置为 OFF。这绝对是多余的,它会产生一些我不需要的开销。 如何防止产生多余的 memset 调用?
godbolt example
【问题讨论】:
我猜至少使用 gcc 你可以使用 -ffreestanding 并将你自己的 memset 放入你的代码中,它什么都不做。或者尝试单独初始化结构变量..这可能会阻止编译器添加 memset。 如果我添加自己的 memset 或进行任何其他数据初始化(即使我不需要它们) - 这无济于事 - MSVC 会以任何方式生成额外的 memset 【参考方案1】:你可以实现Tmp::Tmp()
构造函数来摆脱memset
,即:
struct Tmp
String a0;
String a1;
String a2;
Tmp()
;
https://godbolt.org/z/J6-C8S
【讨论】:
以上是关于MSVC(和 icc)自动调用 memset C++的主要内容,如果未能解决你的问题,请参考以下文章
Qt5 msvc 2010不识别自动(c ++ 11)[重复]