Tak naprawdę jestem zaintrygowany tym, czy może przetrwać agresywną taktykę optymalizacji stosowaną przez GCC i klang.Czy nowa optymalizacja rozmieszczenia może przetrwać, w przeciwieństwie do memsetu?
Biorąc pod uwagę następujący przykład:
void* clean(void* pointer, std::size_t size) noexcept
{
return new(pointer) char[size]{};
}
void doStuff()
{
//...
clean(pointer, size);
//...
}
mogę zaufać to zadanie czyszczenia poufnych danych?
Nie można ufać nowemu rozmieszczeniu tablic [w ogóle] (http://stackoverflow.com/q/8720425)! –
@KerrekSB przykład podany w tym pytaniu nie jest typem podstawowym. Wspomniane "y" jest wyrównaniem wymaganym przez dany typ, jeśli się nie mylę. – bit2shift
@KerrekSB Po prostu się sprawdziłem, ['clean (wskaźnik, rozmiar);' nie dodaje żadnego dodatkowego narzuta w przypadku wyrównania wyrównania.] (Http://coliru.stacked-crooked.com/a/83952ed415cbd363) w ogóle sens, aby był narzut, gdy używa się wyrównanego 1-bajtowego typu. – bit2shift