Not too sure about this, but I think C++ and C are equal in their default memory footprint.
In the end it's all about how you as a programmer manage the memory rather than choosing between these two rather low level languages.
Just my 2cents, perhaps an expert around here may shed some more light on this.
I'm no expert, but can you actually run C++ on them? I know you'd have to compile your own C++ compiler if you wanted to code an operating system in it, where as you wouldn't need to with C.
I don't see any reason why C would use less memory than C++ though, and you can always use C in C++ anyway.
if you want the best memory management, use assembly.
C the answer to this is the same as which one to use when you are writing kernel mode software and that answer is always C. Memory is very limited, and paging out to the disk isn't an option, so you don't want to use things like vectors that grab a little extra space "just in case it needs it later down the line". You don't want to use a class that will generate a constructor, copy constructor and destructor by default if you aren't going to use them when you know you can get away with a C-style struct or union. You want to avoid templates for similar reasons. Even something like a v-table which would be insignificant on any other platform has a noticeable footprint on something like a micro controller.
On a binary level, C++ & C are more or less identical. However, some of C++'s features, such as virtual overloading, incur a performance & memory usage overhead, because of run-time overload resolution through the virtual table. Since microprocessors carry little processing power (I'm no expert in microprocessors, so I might be wrong with this assumption), virtual overloading can use much of its processing power.
Because OS developers want small & fast code, features like templates & and virtual overloading, are avoided. Because of strict resource restrictions on some projects, C is normally the choice.