+++ /dev/null
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <malloc.h>\r
-\r
-struct list {
-#ifdef __WATCOMC__\r
- struct list __based(__self) *next;
-#endif
-#ifdef __BORLANDC__
- struct list _seg *next;
-#endif\r
- int value;\r
-};\r
-\r
-void main(int argc, char *argv[])\r
-{\r
- int i;
-#ifdef __WATCOMC__\r
- __segment segu;
- void __based(__self) *pee;\r
- struct list __based(segu) *head;\r
- struct list __based(segu) *p;
-#endif
-#ifdef __BORLANDC__
- void _seg *pee;\r
- struct list _seg *head;\r
- struct list _seg *p;
-#endif\r
-\r
- /* allocate based heap */\r
- segu = _bheapseg( 65536 );\r
- if( segu == _NULLSEG ) {\r
- printf( "Unable to allocate based heap\n" );\r
- exit( 1 );\r
- }\r
-\r
- /* create a linked list in the based heap */\r
- head = 0;\r
- for( i = 1; i < 4096; i++ ) {\r
- p = _bmalloc( segu, sizeof( struct list ) );\r
- if( p == _NULLOFF ) {\r
- printf( "_bmalloc failed\n" );\r
- break;\r
- }\r
- p->next = head;\r
- p->value = i;\r
- head = p;\r
- }\r
-\r
- /* traverse the linked list, printing out values */\r
- for( p = head; p != 0; p = p->next ) {\r
- if(p==head || p->next==0 || p==pee){
- printf("Segu = %04X", p); printf( " Value = %d\n", p->value );
- }\r
- }\r
-
- printf("program=%FP\n", *argv[0]);
- printf("seg=%04X\n", segu);
-\r
- /* free all the elements of the linked list */\r
- for( ; p = head; ) {\r
- head = p->next;\r
- _bfree( segu, p );\r
- }\r
- /* free the based heap */\r
- _bfreeseg( segu );
-}\r