int i; struct X { int *p; }; struct X * __attribute__((malloc)) my_alloc (void) { struct X *p = __builtin_malloc (sizeof (struct X)); p->p = &i; return p; } extern void abort (void); int main() { struct X *p, *q; p = my_alloc (); q = my_alloc (); *(p->p) = 1; *(q->p) = 0; if (*(p->p) != 0) abort (); return 0; }