When you say "store every allocation" do you mean you never release anything, or do you just mean you store info about every allocation? If it's the former, that sounds kind of crazy, is it common for game developers to do that? If it's the latter, you could always write it to disk (which is what malloc stack logging does).
We had a random memory corruption problem recently, so we started storing every allocation without releasing, to verify periodically. We do free up old memory, but only every 10 million allocations or so.
Maybe it's not super common for games programming, but it's definitely common to not use ref counted pointers or anything that could help you here.