L'approccio a oggetti porta via più memoria, perché (ad esempio) anche per i semplici cout, cin, clog e cerr devono essere mantenuti in memoria dei dati e del codice; la differenza di dimensioni dell'eseguibile probabilmente è dovuta al compilatore: stai compilando i sorgenti C e C++ con due compilatori diversi? Hai attivato le ottimizzazioni del compilatore e disattivato la modalità di debug (che inserisce un mucchio di informazioni rinondanti necessarie al debugger per seguire l'esecuzione)?