![Symbian Developer Library](../../../../a_stock/images/mainheading.gif)
![]() |
![]() |
|
class RAllocator : public MAllocator;
Base class for heaps.
MAllocator
- No description.
RAllocator
-
Base class for heaps.
Defined in RAllocator
:
AllocL(TInt)
Allocates a cell of specified size from the heap, and leaves if there is insuffi...AllocLC(TInt)
Allocates a cell of specified size from the heap, and, if successful, places a p...AllocZ(TInt)
Allocates a cell of specified size from the heap, and clears it to binary zeroes...AllocZL(TInt)
Allocates a cell of specified size from the heap, clears it to binary zeroes, an...Check()const
Checks the validity of the heap.Close()
Closes this shared heap.Count()const
Gets the total number of cells allocated on the heap.Count(TInt &)const
Gets the the total number of cells allocated, and the number of free cells, on t...EAllowMoveOnShrink
Allows the start address of the cell to change if the cell shrinks in size.EBurstDeterministic
aBurst allocations from this heap fail at a rate aRate. For example, if aRate is...EBurstFailNext
aBurst allocations from this heap will fail after the next aRate - 1 allocation ...EBurstRandom
aBurst allocations from this heap fail at a random rate; however, the interval p...EBurstTrueRandom
aBurst allocations from this heap fail at a random rate. The interval pattern be...ECheck
ECheckFailure
Use this to determine how many times the current debug failure mode has failed s...ECopyDebugInfo
ECount
EDeterministic
Attempts to allocate from this heap fail at a rate aRate; for example, if aRate ...EFailNext
An allocation from this heap will fail after the next aRate - 1 allocation attem...EFixedSize
EKernel
The heap is the Kernel heap. EMarkEnd
EMarkStart
EMaxHandles
ENeverMove
A reallocation of a cell must not change the start address of the cell.ENone
Cancels simulated heap allocation failure.ERandom
Attempts to allocate from this heap fail at a random rate; however, the interval...EReset
Cancels simulated heap allocation failure, and sets the nesting level for all al...ESetBurstFail
ESetFail
ESingleThreaded
ETraceAllocs
ETrueRandom
Attempts to allocate from this heap fail at a random rate. The interval pattern ...EUser
The heap is a user heap. Extension_(TUint,TAny *&,TAny *)
FreeZ(TAny *&)
Frees the specified cell, returns it to the heap, and resets the pointer to NULL...Open()
Opens this heap for shared access.RAllocator()
ReAllocL(TAny *,TInt,TInt)
Increases or decreases the size of an existing cell, and leaves if there is insu...SCheckInfo
SRAllocatorBurstFail
TAllocDebugOp
TAllocFail
A set of heap allocation failure flags.TDbgHeapType
Heap debug checking type flag. TFlags
TReAllocMode
Flags controlling reallocation.__DbgCheckFailure()
Returns the number of heap allocation failures the current debug allocator fail ...__DbgMarkCheck(TBool,TInt,const TDesC8 &,TInt)
Checks the current number of allocated heap cells for this heap.__DbgMarkCheck(TBool,TInt,const TUint8 *,TInt)
__DbgMarkEnd(TInt)
Marks the end of heap cell checking at the current nested level for this heap.__DbgMarkStart()
Marks the start of heap cell checking for this heap.__DbgSetAllocFail(TAllocFail,TInt)
Simulates a heap allocation failure for this heap.__DbgSetBurstAllocFail(TAllocFail,TUint,TUint)
Simulates a burst of heap allocation failures for this heap.anonymous
iAccessCount
iCellCount
iFlags
iHandleCount
iHandles
iTotalAllocSize
IMPORT_C TInt Open();
Opens this heap for shared access.
Opening the heap increases the heap's access count by one.
|
IMPORT_C void Close();
Closes this shared heap.
Closing the heap decreases the heap's access count by one.
|
IMPORT_C TAny* AllocZ(TInt aSize);
Allocates a cell of specified size from the heap, and clears it to binary zeroes.
If there is insufficient memory available on the heap from which to allocate a cell of the required size, the function returns NULL.
The resulting size of the allocated cell may be rounded up to a value greater than aSize, but is guaranteed to be not less than aSize.
|
|
|
IMPORT_C TAny* AllocZL(TInt aSize);
Allocates a cell of specified size from the heap, clears it to binary zeroes, and leaves if there is insufficient memory in the heap.
The resulting size of the allocated cell may be rounded up to a value greater than aSize, but is guaranteed to be not less than aSize.
|
|
|
IMPORT_C TAny* AllocL(TInt aSize);
Allocates a cell of specified size from the heap, and leaves if there is insufficient memory in the heap.
The resulting size of the allocated cell may be rounded up to a value greater than aSize, but is guaranteed to be not less than aSize.
|
|
|
IMPORT_C TAny* AllocLC(TInt aSize);
Allocates a cell of specified size from the heap, and, if successful, places a pointer to the cell onto the cleanup stack.
The function leaves if there is insufficient memory in the heap.
The resulting size of the allocated cell may be rounded up to a value greater than aSize, but is guaranteed to be not less than aSize.
|
|
|
IMPORT_C void FreeZ(TAny *&aCell);
Frees the specified cell, returns it to the heap, and resets the pointer to NULL.
|
|
IMPORT_C TAny* ReAllocL(TAny *aCell, TInt aSize, TInt aMode=0);
Increases or decreases the size of an existing cell, and leaves if there is insufficient memory in the heap.
If the cell is being decreased in size, then it is guaranteed not to move, and the function returns the pointer originally passed in aCell. Note that the length of the cell will be the same if the difference between the old size and the new size is smaller than the minimum cell size.
If the cell is being increased in size, i.e. aSize is bigger than its current size, then the function tries to grow the cell in place. If successful, then the function returns the pointer originally passed in aCell. If unsuccessful, then:
1. if the cell cannot be moved, i.e. aMode has the ENeverMove bit set, then the function leaves. 2. if the cell can be moved, i.e. aMode does not have the ENeverMove bit set, then the function tries to allocate a new replacement cell, and, if successful, returns a pointer to the new cell; if unsuccessful, it leaves.
Note that in debug mode, the function leaves if the cell cannot be grown in place, regardless of whether the ENeverMove bit is set.
If the reallocated cell is at a different location from the original cell, then the content of the original cell is copied to the reallocated cell.
Note the following general points:
1. If reallocation fails, the content of the original cell is preserved.
2. The resulting size of the re-allocated cell may be rounded up to a value greater than aSize, but is guaranteed to be not less than aSize.
|
|
|
RAllocator::TReAllocMode
Flags controlling reallocation.IMPORT_C TInt Count() const;
Gets the total number of cells allocated on the heap.
|
IMPORT_C TInt Count(TInt &aFreeCount) const;
Gets the the total number of cells allocated, and the number of free cells, on the heap.
|
|
UIMPORT_C UIMPORT_C void Check() const;
Checks the validity of the heap.
The function walks through the list of allocated cells and the list of free cells checking that this heap is consistent and complete.
|
UIMPORT_C UIMPORT_C void __DbgMarkStart();
Marks the start of heap cell checking for this heap.
If earlier calls to RAllocator::__DbgMarkStart()
have been made, then this call to RAllocator::__DbgMarkStart()
marks the start of a new nested level of heap cell checking.
Every call to RAllocator::__DbgMarkStart()
should be matched by a later call to RAllocator::__DbgMarkEnd(TInt)
to verify that the number of heap cells allocated, at the current nested level, is as expected. This expected number of heap
cells is passed to RAllocator::__DbgMarkEnd(TInt)
as a parameter; however, the most common expected number is zero, reflecting the fact that most developers check that all
memory allocated since a previous call to RAllocator::__DbgMarkStart()
has been freed.
RAllocator::__DbgMarkEnd(TInt)
Marks the end of heap cell checking at the current nested level for this heap.UIMPORT_C UIMPORT_C TUint32 __DbgMarkEnd(TInt aCount);
Marks the end of heap cell checking at the current nested level for this heap.
A call to this function should match an earlier call to RAllocator::__DbgMarkStart()
. If there are more calls to this function than calls to RAllocator::__DbgMarkStart()
, then this function raises a USER 51 panic.
The function checks that the number of heap cells allocated, at the current nested level, is aCount. The most common value
for aCount is zero, reflecting the fact that most developers check that all memory allocated since a previous call to RAllocator::__DbgMarkStart()
has been freed.
If the check fails, the function returns a pointer to the first orphaned heap cell.
|
|
RAllocator::__DbgMarkStart()
Marks the start of heap cell checking for this heap.UIMPORT_C UIMPORT_C TInt __DbgMarkCheck(TBool aCountAll, TInt aCount, const TDesC8 &aFileName, TInt aLineNum);
Checks the current number of allocated heap cells for this heap.
If aCountAll is true, the function checks that the total number of allocated cells on this heap is the same as aCount. If aCountAll is false, then the function checks that the number of allocated cells at the current nested level is the same as aCount.
If checking fails, the function raises a panic; information about the failure is put into the panic category; this takes the form:
ALLOC COUNT\rExpected aaa\rAllocated bbb\rLn: ccc ddddd
where
1. aaaa is the value aCount
2. bbbb is the number of allocated heap cells
3. ccc is a line number, copied from aLineNum
4. ddddd is a file name, copied from the descriptor aFileName
Note that the panic number is 1.
|
|
inline void __DbgMarkCheck(TBool aCountAll, TInt aCount, const TUint8 *aFileName, TInt aLineNum);
|
UIMPORT_C UIMPORT_C void __DbgSetAllocFail(TAllocFail aType, TInt aRate);
Simulates a heap allocation failure for this heap.
The failure occurs on subsequent calls to new or any of the functions which allocate memory from this heap.
The timing of the allocation failure depends on the type of allocation failure requested, i.e. on the value of aType.
The simulation of heap allocation failure is cancelled if aType is given the value RAllocator::ENone
.
Notes:
1. If the failure type is RAllocator::EFailNext
, the next attempt to allocate from this heap fails; however, no further failures will occur.
2. For failure types RAllocator::EFailNext
and RAllocator::ENone
, set aRate to 1.
|
UIMPORT_C UIMPORT_C void __DbgSetBurstAllocFail(TAllocFail aType, TUint aRate, TUint aBurst);
Simulates a burst of heap allocation failures for this heap.
The failure occurs for aBurst allocations attempt via subsequent calls to new or any of the functions which allocate memory from this heap.
The timing of the allocation failure depends on the type of allocation failure requested, i.e. on the value of aType.
The simulation of heap allocation failure is cancelled if aType is given the value RAllocator::ENone
.
Notes:
1. If the failure type is RAllocator::EFailNext
or RAllocator::EBurstFailNext
, the next one or aBurst attempts to allocate from this heap will fail; however, no further failures will occur.
2. For failure types RAllocator::EFailNext
and RAllocator::ENone
, set aRate to 1.
|
RAllocator::TAllocFail
A set of heap allocation failure flags.UIMPORT_C UIMPORT_C TUint __DbgCheckFailure();
Returns the number of heap allocation failures the current debug allocator fail function has caused so far.
This is intended to only be used with fail types RAllocator::EFailNext
, RAllocator::EBurstFailNext
, RAllocator::EDeterministic
and RAllocator::EBurstDeterministic
. The return value is unreliable for all other fail types.
|
RAllocator::TAllocFail
A set of heap allocation failure flags.protected: UIMPORT_C UIMPORT_C virtual TInt Extension_(TUint aExtensionId, TAny *&a0, TAny *a1);
|
|
struct SCheckInfo;
Defined in RAllocator::SCheckInfo
:
iAll
TBool iAll;
iCount
TInt iCount;
iFileName
const TDesC8 * iFileName;
iLineNum
TInt iLineNum;
struct SRAllocatorBurstFail;
Defined in RAllocator::SRAllocatorBurstFail
:
iBurst
TInt iBurst;
iRate
TInt iRate;
iUnused
TInt iUnused[2];
TAllocFail
A set of heap allocation failure flags.
This enumeration indicates how to simulate heap allocation failure.
RAllocator::__DbgSetAllocFail(TAllocFail,TInt)
Simulates a heap allocation failure for this heap.
|
TDbgHeapType
Heap debug checking type flag.
|
TReAllocMode
Flags controlling reallocation.
|
protected: TInt iTotalAllocSize;