Fix c++20 compilation problem for clang10 and fix potential bug due to compiler optimization

This commit is contained in:
Christian Ledergerber 2020-10-13 17:55:58 +02:00 committed by Billy Donahue
parent 5f4e10462f
commit 30170d651c

View File

@ -35,11 +35,10 @@ public:
* Release memory which was allocated for N items at pointer P. * Release memory which was allocated for N items at pointer P.
* *
* The memory block is filled with zeroes before being released. * The memory block is filled with zeroes before being released.
* The pointer argument is tagged as "volatile" to prevent the
* compiler optimizing out this critical step.
*/ */
void deallocate(volatile pointer p, size_type n) { void deallocate(pointer p, size_type n) {
std::memset(p, 0, n * sizeof(T)); // memset_s is used because memset may be optimized away by the compiler
memset_s(p, n * sizeof(T), 0, n * sizeof(T));
// free using "global operator delete" // free using "global operator delete"
::operator delete(p); ::operator delete(p);
} }