If you want to go C++, you could use the Dark GDK, although you can check a little more, there are tons of frameworks/engines out there for C++ (but not many ideas from me, I'm not a C++ guy
).
Your other alternative would be going C#. There you have two alternatives:
- SlimDX: this is a managed wrapper of DirectX for C#. This is the option if you want to fight with all the low-level details of writing a graphic engine, or you want DX10 or DX11 cool things.
- XNA: XNA is not only for the Xbox360, but also for the PC and for Windows Phone 7. XNA is higher level than DX and it's aimed to allow you to hide the low level details from you. For example, there's an object called SpriteBatch for 2D drawing that is really using quads for rendering sprites under the hood for you. As they are really quads, with their vertices and so on, you could for example apply a shader to modify how your sprites are rendered.
I would honestly recommend that if you are going to make a 2D game alone, you go Visual Studio 2010 + C# 4.0 + XNA 4.0: it's very productive, it has a ton of support (http://forums.create.msdn.com/forums/) and samples (http://create.msdn.com/). Even outside MSDN forums you can have great help in game development sites like Gamedev.
About Civ V, the game is not written in Python, it's core is C++. But most games are written nowadays that way: a core in C++ and then designers use other things (UnrealScript, LUA, Python,...). But this is mostly because all higher-level/script languages are more productive than C++ for design work.
And about the memory leaks, in .NET it's usually related to not unhooking events, but there are tons of profilers to find those.