Чистый Си намного проще чем Java, а C++ сложнее чисто из-за метапрограммирования (шаблоны). Да шаблоны - очень мутная и сложная тема имхо. В плюсах (особенно в STL) их пихают везде где можно (даже где не нужно). Плюс всякие копирующие и move семантики тоже добавляют сложности. И да, про память - насколько я знаю (я не плюсовик, но немного знаком) в плюсах не особо много ручной работы с памятью. Там как и в других языках есть коллекции (типа std::vector и пр.) которые избавляют от ручного выделения памяти, а если все-же понадобилось выделять память самому - есть всякие там умные указатели (shared_ptr и т.п.) которые сами ее освобождают.