I was actually thinking about providing an implicit conversion to the TableTupe type instead of inheriting from it since the cost of creating a new tuple is minimal - two pointers only. But the inheritance would work as well - the eternal question of HAS-A vs. IS-A
Right now I simply new the required memory. The alternative approach could be to use something similar to the TempTable::nextFreeTuple to make sure all memory is allocated from a single source. I don't think that any additional memory management API is required. The de-allocation is handled by the destructor, and the memory size is not going to change unless the underline schema is changed (the assignment operator handles it anyway).