c/c++开发分享malloc和gcc优化2

while(count < 30000000){ malloc(24); count++; } 

上面的代码在我用gcc -O0编译的计算机上运行大约170毫秒。 但是,使用-Ox进行编译,其中x> 0,优化器巧妙地指出所请求的内存永远不会被使用,因此它被排除在优化的可执行文件之外。 它是如何做到的?

    那么编译器看到malloc返回值从未被使用过,所以它会优化它。 如果你想防止malloc调用在-O3被优化掉,你可以使用volatile限定符:

     while(count < 30000000){ void * volatile p = malloc(24); count++; } 

      以上就是c/c++开发分享malloc和gcc优化2相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545827.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注