There is, quite literally, no way to ensure data is not leaked (namely, that data is zeroed / etc) in portable C / C++.
With C it's far too easy to get the data back.
Also, you missed the worst example: CPU cache.
There is, quite literally, no way to ensure data is not leaked (namely, that data is zeroed / etc) in portable C / C++.