mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +03:00
56 lines
1.7 KiB
C++
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
|