This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/samples/clibexam/_bheapse.c

50 lines
1 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
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 );
}