typedef /*@only@*/ int *oip; typedef /*@abstract@*/ struct { oip *ips; int size; } *sip; void sip_free (/*@only@*/ sip x) { int i; for (i = 0; i < x->size; i++) { free (x->ips[i]); free (x->ips[i]); } free (x->ips); free (x); } void sip_free2 (/*@only@*/ sip x) { free (x->ips); /* 1. Only storage *(x->ips) (type oip) derived from released */ free (x); }