gpt4 book ai didi

c++ - 与 memset 不同,placement new 能否存活优化?

转载 作者:IT王子 更新时间:2023-10-28 23:38:05 27 4
gpt4 key购买 nike

所以我真的很想知道它能否在 GCC 和 clang 采用的激进优化策略中幸存下来。

考虑以下示例:

void* clean(void* pointer, std::size_t size) noexcept
{
return new(pointer) char[size]{};
}

void doStuff()
{
//...
clean(pointer, size);
//...
}

我可以信任它清理敏感数据的任务吗?

最佳答案

我不认为优化可以在这里对你耍任何花招。在这种情况下,标准要求值初始化:new(pointer) char[size]{},因此在此调用后 pointer 指向的内存将用 0 填充。

如果您从不访问新指针或在访问之前覆盖它(基于可观察性),编译器可能会对其进行优化。如果你想避免这种轻微的可能性,你需要将你的指针定义为一个指向 volatile 的指针。

关于c++ - 与 memset 不同,placement new 能否存活优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35922772/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com