草庐IT

c++ - 编译器可以删除 `memset` 函数调用吗?

我已阅读here如果编译器知道传递的内存缓冲区不再使用,它​​可以自由地删除对memset的调用。这怎么可能?在我看来(从核心语言的角度来看)memset只是一个常规函数,编译器无权假设其中发生的任何事情都没有副作用。在linkedarticle他们展示了VisualC++10如何删除memset。我知道Microsoft编译器在标准合规性方面并不领先,所以我问-是根据标准,还是只是msvc-ism?如果符合标准,请详细说明;)编辑:@库比以下代码:voidtestIt(){charfoo[1234];for(inti=0;i在mingw下用行编译:g++-c-O2-frtti-fex

c++ - 编译器可以删除 `memset` 函数调用吗?

我已阅读here如果编译器知道传递的内存缓冲区不再使用,它​​可以自由地删除对memset的调用。这怎么可能?在我看来(从核心语言的角度来看)memset只是一个常规函数,编译器无权假设其中发生的任何事情都没有副作用。在linkedarticle他们展示了VisualC++10如何删除memset。我知道Microsoft编译器在标准合规性方面并不领先,所以我问-是根据标准,还是只是msvc-ism?如果符合标准,请详细说明;)编辑:@库比以下代码:voidtestIt(){charfoo[1234];for(inti=0;i在mingw下用行编译:g++-c-O2-frtti-fex