18#ifndef MAGICKCORE_MEMORY_H
19#define MAGICKCORE_MEMORY_H
23#if defined(__cplusplus) || defined(c_plusplus)
31 *(*AcquireMemoryHandler)(size_t) magick_alloc_size(1),
32 (*DestroyMemoryHandler)(
void *),
33 *(*ResizeMemoryHandler)(
void *,size_t) magick_alloc_size(2),
34 *(*AcquireAlignedMemoryHandler)(
const size_t,
const size_t),
35 (*RelinquishAlignedMemoryHandler)(
void *);
38 *AcquireVirtualMemory(
const size_t,
const size_t) magick_alloc_sizes(1,2),
41extern MagickExport
size_t
42 GetMaxMemoryRequest(
void);
44extern MagickExport
void
45 *AcquireAlignedMemory(
const size_t,
const size_t)
46 magick_attribute((__malloc__)) magick_alloc_sizes(1,2),
47 *AcquireMagickMemory(
const size_t) magick_attribute((__malloc__))
49 *AcquireCriticalMemory(
const size_t),
50 *AcquireQuantumMemory(
const size_t,
const size_t)
51 magick_attribute((__malloc__)) magick_alloc_sizes(1,2),
52 *CopyMagickMemory(
void *magick_restrict,
const void *magick_restrict,
53 const size_t) magick_attribute((__nonnull__)),
54 DestroyMagickMemory(
void),
55 GetMagickMemoryMethods(AcquireMemoryHandler *,ResizeMemoryHandler *,
56 DestroyMemoryHandler *),
58 *RelinquishAlignedMemory(
void *),
59 *RelinquishMagickMemory(
void *),
60 *ResetMagickMemory(
void *,
int,
const size_t),
61 *ResizeMagickMemory(
void *,
const size_t)
62 magick_attribute((__malloc__)) magick_alloc_size(2),
63 *ResizeQuantumMemory(
void *,
const size_t,
const size_t)
64 magick_attribute((__malloc__)) magick_alloc_sizes(2,3),
65 SetMagickAlignedMemoryMethods(AcquireAlignedMemoryHandler,
66 RelinquishAlignedMemoryHandler),
67 SetMagickMemoryMethods(AcquireMemoryHandler,ResizeMemoryHandler,
68 DestroyMemoryHandler);
70static inline MagickBooleanType HeapOverflowSanityCheck(
71 const size_t count,
const size_t quantum)
73 if ((count == 0) || (quantum == 0))
75 if (quantum != ((count*quantum)/count))
83static inline MagickBooleanType HeapOverflowSanityCheckGetSize(
84 const size_t count,
const size_t quantum,
size_t *
const extent)
89 if ((count == 0) || (quantum == 0))
92 if (quantum != (length/count))
102#if defined(__cplusplus) || defined(c_plusplus)