Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
en:docs:fapi:dosfreeseg [2018/09/02 16:35] – prokushev | en:docs:fapi:dosfreeseg [2021/12/05 09:56] (current) – prokushev | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{logos:os2.gif? | + | {{page>en:templates:fapiint}} |
====== DosFreeSeg ====== | ====== DosFreeSeg ====== | ||
This call deallocates a memory segment. | This call deallocates a memory segment. | ||
- | ==Syntax== | + | ===== Syntax |
- | | + | <code c> |
+ | DosFreeSeg (Selector) | ||
+ | </ | ||
- | ==Parameters== | + | ===== Parameters |
* Selector ([[SEL]]) - input : Selector of the segment to be freed. | * Selector ([[SEL]]) - input : Selector of the segment to be freed. | ||
- | ==Return Code== | + | ===== Return Code ===== |
- | | + | rc ([[USHORT]]) - return |
Return code descriptions are: | Return code descriptions are: | ||
Line 21: | Line 23: | ||
* 212 | * 212 | ||
- | ==Remarks== | + | ===== Remarks |
- | DosFreeSeg frees selectors to segments returned by allocation calls to [[DosAllocSeg]], | ||
- | When allocated memory is shared, all selectors to the shared memory must be freed before the memory is deallocated. For example, if memory allocated | + | DosFreeSeg frees selectors to segments returned |
- | DosFreeSeg decrements the reference count for named shared segments allocated by DosAllocShrSeg. Access to the segment with [[DosGetShrSeg]] increments this count. When the count is 0, the memory is deallocated. | + | When allocated memory is shared, all selectors to the shared memory must be freed before the memory is deallocated. For example, if memory allocated by [[DosAllocSeg]] or [[DosAllocHuge]] has been given to another process with [[DosGiveSeg]], |
+ | |||
+ | DosFreeSeg decrements the reference count for named shared segments allocated by [[DosAllocShrSeg]]. Access to the segment with [[DosGetShrSeg]] increments this count. When the count is 0, the memory is deallocated. | ||
+ | |||
+ | ==== Family API Considerations ==== | ||
- | ===Family API Considerations=== | ||
Some options operate differently in the DOS mode than in OS/2 mode. Therefore, the following restriction applies to DosFreeSeg when coding for the DOS mode: | Some options operate differently in the DOS mode than in OS/2 mode. Therefore, the following restriction applies to DosFreeSeg when coding for the DOS mode: | ||
Line 35: | Line 39: | ||
If DosFreeSeg is issued on a CSAliased segment it deallocates the associated memory. This is inconsistent with the OS/2 mode, because DosFreeSeg must be performed on both the original and CSAliased selectors. | If DosFreeSeg is issued on a CSAliased segment it deallocates the associated memory. This is inconsistent with the OS/2 mode, because DosFreeSeg must be performed on both the original and CSAliased selectors. | ||
- | ==Example Code== | + | ===== Example Code ===== |
- | ===C Binding=== | + | |
+ | ==== C Binding ==== | ||
+ | |||
+ | <code c> | ||
#define INCL_DOSMEMMGR | #define INCL_DOSMEMMGR | ||
| | ||
Line 45: | Line 51: | ||
| | ||
USHORT | USHORT | ||
+ | </ | ||
This example allocates a segment of 30,250 bytes and then discards the segment. | This example allocates a segment of 30,250 bytes and then discards the segment. | ||
+ | <code c> | ||
#define INCL_DOSMEMMGR | #define INCL_DOSMEMMGR | ||
| | ||
Line 60: | Line 67: | ||
| | ||
rc = DosFreeSeg(Selector); | rc = DosFreeSeg(Selector); | ||
+ | </ | ||
- | ===MASM Binding=== | + | ==== MASM Binding |
+ | <code asm> | ||
EXTRN DosFreeSeg: | EXTRN DosFreeSeg: | ||
INCL_DOSMEMMGR | INCL_DOSMEMMGR | ||
Line 68: | Line 77: | ||
PUSH | PUSH | ||
CALL | CALL | ||
+ | </ | ||
Returns WORD | Returns WORD | ||
+ | ===== Note ===== | ||
- | |||
- | ====== Note ====== | ||
Text based on http:// | Text based on http:// |