$1 == "malloc" { if ($4 == "0x0") printf "malloc:%d: out of memory\n", NR; else { if (a[$4] != "") { printf "malloc:%d: area 0x%x already allocated\n", NR, $4; } a[$4] = $2; } } $1 == "free" { if (a[$2] == "") { printf "free:%d: area 0x%x unallocated\n", NR, $2; } else a[$2] = ""; } $1 == "realloc" { if (a[$2] == "") { printf "realloc:%d: area 0x%x unallocated\n", NR, $2; } else { a[$2] = ""; if (a[$5] != "") { printf "realloc:%d: area 0x%x already allocated\n", NR, $5; } a[$5] = $3; } } END { printf "Not freed: "; for (ind in a) { if (a[ind] != "") { printf "%s(%s) ", ind, a[ind]; } } print ""; }