// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors // Distributed under MIT license, or public domain if desired and // recognized in your jurisdiction. // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
namespace Json { template <typename T> class SecureAllocator { public: // Type definitions using value_type = T; using pointer = T*; using const_pointer = const T*; using reference = T&; using const_reference = const T&; using size_type = std::size_t; using difference_type = std::ptrdiff_t;
/** * Allocate memory for N items using the standard allocator.
*/
pointer allocate(size_type n) { // allocate using "global operator new" returnstatic_cast<pointer>(::operatornew(n * sizeof(T)));
}
/** * Release memory which was allocated for N items at pointer P. * * The memory block is filled with zeroes before being released.
*/ void deallocate(pointer p, size_type n) { // 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"
::operatordelete(p);
}
/** * Construct an item in-place at pointer P.
*/ template <typename... Args> void construct(pointer p, Args&&... args) { // construct using "placement new" and "perfect forwarding"
::new (static_cast<void*>(p)) T(std::forward<Args>(args)...);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.