1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00
Files
occt/src/NCollection/NCollection_WinHeapAllocator.hxx
2015-06-30 10:59:50 +03:00

56 lines
1.7 KiB
C++

// File: NCollection_WinHeapAllocator.hxx
// Created: 22.07.11
// Author: Kirill GAVRILOV
// Copyright: Open Cascade 2011
#ifndef NCollection_WinHeapAllocator_HeaderFile
#define NCollection_WinHeapAllocator_HeaderFile
#include <NCollection_BaseAllocator.hxx>
//! This memory allocator creates dedicated heap for allocations.
//! This technics available only on Windows platform
//! (no alternative on Unix systems).
//! It may be used to take control over memory fragmentation
//! because on destruction ALL allocated memory will be released
//! to the system.
//!
//! This allocator can also be created per each working thread
//! hovewer it real multi-threading performance is dubious.
//!
//! Notice that this also means that existing pointers will be broken
//! and you shoould control that allocator is alive along all objects
//! allocated with him.
class NCollection_WinHeapAllocator : public NCollection_BaseAllocator
{
public:
//! Main constructor
Standard_EXPORT NCollection_WinHeapAllocator (const size_t theInitSizeBytes = 0x80000);
Standard_EXPORT virtual ~NCollection_WinHeapAllocator();
Standard_EXPORT virtual void* Allocate (const Standard_Size theSize);
Standard_EXPORT virtual void Free (void* theAddress);
// Declaration of CASCADE RTTI
DEFINE_STANDARD_RTTI(NCollection_WinHeapAllocator)
private:
//! Copy constructor - prohibited
NCollection_WinHeapAllocator (const NCollection_WinHeapAllocator& );
private:
#if(defined(_WIN32) || defined(__WIN32__))
void* myHeapH;
#endif
Standard_Boolean myToZeroMemory;
};
// Definition of HANDLE object using Standard_DefineHandle.hxx
DEFINE_STANDARD_HANDLE (NCollection_WinHeapAllocator, NCollection_BaseAllocator)
#endif //NCollection_WinHeapAllocator_HeaderFile