I am embarrassed to admit that there are no less than three errors in the listings and one in the text (accompanying "Dynamic Multidimensional Arrays in C"). To begin with, I quoted Section 14.3 of Appendix A from "The C Programming Language" - there is no Appendix B. More serious are the listing errors: 1. The "main" function allocates an array "foo[2][3][4]", then accesses "foo[2][1][0]", which is out of bounds. This should have been "foo[1][1][0]" (and the same for "goo"). 2. Function "a3d_allo" should have the expression "row[j]" replaced with "sub[i][j]", and the now-superfluous local variable "row" deleted. 3. Function "a3d_free" neglects to free the row arrays. It must be passed the size of the row pointers (i.e. - "a3d_free(sub, dim1, dim2)"), and call "free(sub[i][j])" for each element 'j' of each row pointer array. My apologies to CL's readers for any inconvenience these errors may have caused.