Huge correction: Due to C's ordering of = (i.e., none), we must control writing data as well as pointers. a->b = c() is unsafe, since c could change a.