#include #include #include struct list { struct list __based(__self) *next; int value; }; void main() { int i; __segment seg; struct list __based(seg) *head; struct list __based(seg) *p; /* allocate based heap */ seg = _bheapseg( 1024 ); if( seg == _NULLSEG ) { printf( "Unable to allocate based heap\n" ); exit( 1 ); } /* create a linked list in the based heap */ head = 0; for( i = 1; i < 10; i++ ) { p = _bmalloc( seg, sizeof( struct list ) ); if( p == _NULLOFF ) { printf( "_bmalloc failed\n" ); break; } p->next = head; p->value = i; head = p; } /* traverse the linked list, printing out values */ for( p = head; p != 0; p = p->next ) { printf( "Value = %d\n", p->value ); } /* free all the elements of the linked list */ for( ; p = head; ) { head = p->next; _bfree( seg, p ); } /* free the based heap */ _bfreeseg( seg ); }