Why is that good? It also doesn't solve:
int *p = malloc(LOTS);
int v = read_from_network();
int o = read_from_network();
p[o] = v;
if that malloc fails, for example.