#include "heap4_common.h" volatile size_t g_free_total; volatile size_t g_largest_free; volatile int g_node_count; static size_t list_total(HeapBlock *start) { HeapBlock *block; size_t total; total = 0U; for (block = start->next; block != 0; block = block->next) total += block->size; return total; } static size_t list_largest(HeapBlock *start) { HeapBlock *block; size_t largest; largest = 0U; for (block = start->next; block != 0; block = block->next) if (block->size > largest) largest = block->size; return largest; } static int list_count(HeapBlock *start) { HeapBlock *block; int count; count = 0; for (block = start->next; block != 0; block = block->next) count++; return count; } int main(void) { HeapBlock start; HeapBlock a; HeapBlock b; HeapBlock c; start.next = &a; start.size = 0U; a.next = &b; a.size = 32U; b.next = &c; b.size = 80U; c.next = 0; c.size = 24U; g_free_total = list_total(&start); g_largest_free = list_largest(&start); g_node_count = list_count(&start); TRACE_PRINTF("free=%u largest=%u count=%d\n", (unsigned)g_free_total, (unsigned)g_largest_free, g_node_count); return 0; }