blob: b41a07cf005010ce67631551f6fdb3ce147199d1 [file] [log] [blame]
#pragma once
//-------------------------------------------------------------------------------------------------
// <copyright file="memutil.h" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// The use and distribution terms for this software are covered by the
// Common Public License 1.0 (http://opensource.org/licenses/cpl1.0.php)
// which can be found in the file CPL.TXT at the root of this distribution.
// By using this software in any fashion, you are agreeing to be bound by
// the terms of this license.
//
// You must not remove this notice, or any other, from this software.
// </copyright>
//
// <summary>
// Header for memory helper functions.
// </summary>
//-------------------------------------------------------------------------------------------------
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseMem(p) if (p) { MemFree(p); }
#define ReleaseNullMem(p) if (p) { MemFree(p); p = NULL; }
#define MEM_ENSURE_ARRAY_SIZE(type, pointer, count, max, grow, hresult, errMsg) \
if (max <= count) { \
LPVOID pv = NULL; DWORD cNewMax = count + grow; \
if (0 == max) pv = MemAlloc(sizeof(type) * cNewMax, TRUE); else pv = MemReAlloc(pointer, sizeof(type) * cNewMax, TRUE); \
ExitOnNull(pv, hresult, E_OUTOFMEMORY, errMsg); \
max = cNewMax; pointer = static_cast<type*>(pv); \
}
HRESULT DAPI MemInitialize();
void DAPI MemUninitialize();
LPVOID DAPI MemAlloc(
__in SIZE_T cbSize,
__in BOOL fZero
);
LPVOID DAPI MemReAlloc(
__in LPVOID pv,
__in SIZE_T cbSize,
__in BOOL fZero
);
HRESULT DAPI MemEnsureArraySize(
__inout_ecount(cArray) LPVOID* ppvArray,
__in DWORD cArray,
__in SIZE_T cbArrayType,
__in DWORD dwGrowthCount
);
HRESULT DAPI MemFree(
__in LPVOID pv
);
SIZE_T DAPI MemSize(
__in LPCVOID pv
);
#ifdef __cplusplus
}
#endif