Dynamic memory management is inadvisable in avionics code, making languages that rely on garbage collection (perhaps pointlessly) challenging to use. But in general, there are no restrictions on what language is used. The particular version of the compiler you are using has to be certified, but just long as you can use the language and the compiler to meet DO-178B/C standards, you can use whatever you want. You can use whatever tools you want, if they get certified. You can write your own tools and certify them. Anything goes, just so long as it meets standards.
(Working on some flight management software, I found a bug in our version of GCC. It's free software, right? So I could just fix it? Or even upgrade to a newer version? That would have meant re-certifying the compiler, so it was easier to work around the bug.)
In practice, I do see a lot avionics code written in Ada. I see a lot written in C. I see a lot written in C++. I haven't seen much else. I would guess a roughly even split between Ada and C or C++, with either C or C++ being increasingly favored for new clean sheet projects.
Surprisingly you don't even need to use DO-178, you just need to convince the FAA that it is safe. I have never heard of anyone not using DO-178 though.
I have never heard of anyone not using DO-178 though.
Me neither. I can imagine that would be harder than just using DO-178, as the auditors are used to dealing with it.
Have you seen level A software written using C++?
Not personally. I have heard of a level A flight controls project that was planning to use C++, and was in the process of getting their C++ compiler (GCC C++, I believe) certified. I don't know how it turned out.