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

Defines

#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 >
Type * addBytesToPointer (Type *pointer, int 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 (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.

Define Documentation

(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 
)

Fills a block of memory with zeros.

Referenced by HeapBlock< ObjectClass * >::clear(), and Matrix3D< Type >::Matrix3D().

template<typename Type >
void zerostruct ( Type &  structure)

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 >
Type* addBytesToPointer ( Type *  pointer,
int  bytes 
)

A handy function which adds a number of bytes to any type of pointer and returns the result.

This can be useful to avoid casting pointers to a char* and back when you want to move them by a specific number of bytes,

Referenced by String::appendCharPointer(), AudioData::ConverterInstance< SourceSampleType, DestSampleType >::convertSamples(), AudioFormatReader::ReadHelper< DestSampleType, SourceSampleType, SourceEndianness >::read(), and AudioFormatWriter::WriteHelper< DestSampleType, SourceSampleType, DestEndianness >::write().

template<typename Type1 , typename Type2 >
int getAddressDifference ( Type1 *  pointer1,
Type2 *  pointer2 
)

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 ( 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 ScopedPointer< ListViewport >::createCopy().