Click or drag to resize

MemGrpCAlloc Function

Allocate static memory buffers of a specified size.

Namespace:  XSharp.RT
Assembly:  XSharp.RT (in XSharp.RT.dll) Version: 2.10
Syntax
 FUNCTION MemGrpCAlloc(
	wGroup AS DWORD,
	wItems AS DWORD,
	wBytes AS DWORD
) AS IntPtr
View Source

Parameters

wGroup
Type: UInt32
The group to which the newly allocated memory buffer will belong.  This group should have already been opened by MemGrpOpen().
wItems
Type: UInt32
The number of items to allocate memory for.
wBytes
Type: UInt32
The number of bytes to allocate for each item.

Return Value

Type: IntPtr
A pointer to the allocated space if there is sufficient memory available; otherwise, a NULL_PTR.  You should always check the return value from MemCAlloc() for a successful allocation.
Remarks
Tip Tip
The Static Memory Functions (MemAlloc, MemSet etc) are included for compatibility only. In most cases the static memory blocks can (and should) be replaced with arrays of bytes.
Many of the functions in the runtime that take memory blocks as parameter, such as the low level IO functions, now have overloads that take arrays of bytes as parameter.
We recommend that you use these overloads, because their performance is somewhat better.
Examples
This example uses MemCAlloc() to allocate space for ten long integers:
X#
LOCAL ptrLongs AS PTR
ptrLongs := MemCAlloc(10, 4)
Instead of hard-coding 4 for the size of a long integer, we could have issued:
X#
ptrLongs := MemCAlloc(10, _SizeOf(LONG))
This next example uses MemCAlloc() to allocate space for five instances of a defined structure:
X#
STRUCTURE StatInfo
        MEMBER wAverageHit AS DWORD
        MEMBER wMaxHit AS DWORD
        MEMBER wMinHit AS DWORD
FUNCTION MemCAlloc2() AS VOID
        LOCAL ptrStruct AS PTR
        ptrStruct := MemCAlloc(5, _SizeOf(StatInfo))
        IF ptrStruct = NULL_PTR
                ? "Allocation failed"
        ELSE
                MemFree(ptrStruct)
        ENDIF
See Also