JUCE
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
Classes | Macros | Functions
juce_Memory.h File Reference

Classes

class  ScopedAutoReleasePool
 A handy C++ wrapper that creates and deletes an NSAutoreleasePool object using RAII. More...
 

Macros

#define JUCE_AUTORELEASEPOOL   @autoreleasepool
 A macro that can be used to easily declare a local ScopedAutoReleasePool object for RAII-based obj-C autoreleasing.
 
#define juce_UseDebuggingNewOperator
 (Deprecated) This was a Windows-specific way of checking for object leaks - now please use the JUCE_LEAK_DETECTOR instead.
 

Functions

void zeromem (void *memory, size_t numBytes) noexcept
 Fills a block of memory with zeros.
 
template<typename Type >
void zerostruct (Type &structure) noexcept
 Overwrites a structure or object with zeros.
 
template<typename Type >
void deleteAndZero (Type &pointer)
 Delete an object pointer, and sets the pointer to null.
 
template<typename Type , typename IntegerType >
Type * addBytesToPointer (Type *pointer, IntegerType bytes) noexcept
 A handy function which adds a number of bytes to any type of pointer and returns the result.
 
template<typename Type1 , typename Type2 >
int getAddressDifference (Type1 *pointer1, Type2 *pointer2) noexcept
 A handy function which returns the difference between any two pointers, in bytes.
 
template<class Type >
Type * createCopyIfNotNull (const Type *pointer)
 If a pointer is non-null, this returns a new copy of the object that it points to, or safely returns nullptr if the pointer is null.
 

Macro Definition Documentation

#define JUCE_AUTORELEASEPOOL   @autoreleasepool

A macro that can be used to easily declare a local ScopedAutoReleasePool object for RAII-based obj-C autoreleasing.

Because this may use the @autoreleasepool syntax, you must follow the macro with a set of braces to mark the scope of the pool.

#define juce_UseDebuggingNewOperator

(Deprecated) This was a Windows-specific way of checking for object leaks - now please use the JUCE_LEAK_DETECTOR instead.

Function Documentation

void zeromem ( void *  memory,
size_t  numBytes 
)
noexcept
template<typename Type >
void zerostruct ( Type &  structure)
noexcept

Overwrites a structure or object with zeros.

template<typename Type >
void deleteAndZero ( Type &  pointer)

Delete an object pointer, and sets the pointer to null.

Remember that it's not good c++ practice to use delete directly - always try to use a ScopedPointer or other automatic lifetime-management system rather than resorting to deleting raw pointers!

template<typename Type , typename IntegerType >
Type* addBytesToPointer ( Type *  pointer,
IntegerType  bytes 
)
noexcept
template<typename Type1 , typename Type2 >
int getAddressDifference ( Type1 *  pointer1,
Type2 *  pointer2 
)
noexcept

A handy function which returns the difference between any two pointers, in bytes.

The address of the second pointer is subtracted from the first, and the difference in bytes is returned.

Referenced by CharacterFunctions::copyWithDestByteLimit().

template<class Type >
Type* createCopyIfNotNull ( const Type *  pointer)

If a pointer is non-null, this returns a new copy of the object that it points to, or safely returns nullptr if the pointer is null.

Referenced by OwnedArray< MidiBuffer >::addCopiesOf(), and ScopedPointer< ListViewport >::createCopy().