{{page>en:templates:fapiint}}
====== DosSubFree ======
This call frees memory previously allocated by DosSubAlloc.
===== Syntax =====
DosSubFree (SegSelector, BlockOffset, Size)
===== Parameters =====
* SegSelector ([[SEL]]) - input : Data segment selector.
* BlockOffset ([[USHORT]]) - input : Memory block offset. The value specified must equal the BlockOffset returned on a previous DosSubAlloc call.
* Size ([[USHORT]]) - input : Size, in bytes, of the block to be freed.
===== Return Code =====
rc ([[USHORT]]) - return
Return code descriptions are:
* 0 NO_ERROR
* 312 ERROR_DOSSUB_OVERLAP
* 313 ERROR_DOSSUB_BADSIZE
===== Remarks =====
DosSubFree specifies the offset of a block of memory previously suballocated by a [[DosSubAlloc]] request. If the block specified overlaps memory in the segment that is not suballocated, an error is returned. Like [[DosSubAlloc]], the size parameter must be a multiple of four bytes; otherwise, it is rounded up to a multiple of four bytes.
The allocated segment is freed by calling [[DosFreeSeg]].
===== Example Code =====
==== C Binding ====
#define INCL_DOSMEMMGR
USHORT rc = DosSubFree(SegSelector, BlockOffset, Size);
SEL SegSelector; /* Segment selector */
USHORT BlockOffset; /* Offset of memory block to free */
USHORT Size; /* Size of block in bytes */
USHORT rc; /* return code */
==== MASM Binding ====
EXTRN DosSubFree:FAR
INCL_DOSMEMMGR EQU 1
PUSH WORD SegSelector ;Segment selector
PUSH WORD BlockOffset ;Offset of memory block to free
PUSH WORD Size ;Size of block in bytes
CALL DosSubFree
Returns WORD
===== Note =====
Text based on [[http://www.edm2.com/index.php/DosSubFree]]
{{page>en:templates:fapi}}