- ToString() goals: 1) Implement call signature "sprintf(stdout, "%s\n", a_class.ToString());" 2) Deallocate returned char * within the object implementing ToString()--the caller doesn't have to worry about deallocating the returned char *. 3) Reduce memory bloat and handle arbitrary string lengths. 4) No streams (Google prohibits C++ streams (except for logging)). 5) If possible, avoid declaring extra class member variables.
- There ain't no such thing as a free lunch in C++, however. Deallocation occurs two ways--first, when variables declared on the stack go out-of-scope; and second, when variables declared on the heap get freed. The callee, in this case, deallocates the memory. The callee can deallocate the memory in these ways: 1) new within ToString(), delete within the object destructor, 2) statically declare within ToString(), deallocate at end of run-time, and 3) automatically declare within ToString(), deallocate when variable goes out-of-scope. The last choice fails because automatic allocations get reclaimed on the stack immediately when the callee returns. The first choice requires maintenance of a pointer to the new'd memory. The second choice requires a compile-time allocation of memory.
- Of the options, the first choice allows unlimited flexibility at the cost of additional overhead, while the second choice eliminates the overhead but requires a compile-time allocation of memory.
- Estonian Arvo Pärt's "Spiegel im spiegel", from his album Alina. "Spiegel im spiegel" (from Wikipedia): "can mean both "mirror in the mirror" as well as "mirrors in the mirror", referring to the infinity of images produced by parallel plane mirrors."
Monday, September 01, 2008
Monday Development Log
Monday:
No comments:
Post a Comment