And yes, apart from the myriads of usual C++ leaky abstraction bugs that "just" cause wrong results, this includes segfaults.
Mainframes were written in a mix of Assembly and safe system languages (IBM i, z and Unysis ClearPath are the survivors).
8 and 16 bit home micros OSes were largely written in Assembly, and all system languages were in equal footing as platform guests.
That's not what I remembered. Back in 1989, I bought the very popular Microsoft C 5.1 compiler (in shrinkwrapped box) from the Egghead retail store. Egghead was basically a smaller version of CompUSA.
Also, non-UNIX publications like PC Magazine and BYTE had ads for Borland Turbo C. Watcom C was also a competitor.
In the late 1980s and early 1990s, if one wanted to write COTS software for DOS on IBM PC compatibles, it was either assembly or C Language. Other languages like dBASE/Clipper/4GL were for LOB apps instead of COTS. In 1985, both Lotus 123 v3 and MS Excel were written using C.
It was more like the early 1980s before the personal computer revolution when the C Language was mostly tied to UNIX.
Back in the Iberian Penisula, Turbo Basic, Turbo Pascal, TASM, NASM reigned on the PC for COTS.
Amiga demoscene was all about AMOS and 68000 Assembly.
I code since 1986, touched my very first C compiler in 1992.
By then I already had used Timex 2068 Basic, 48+ Basic, CP/M on +3 A, Z80, Turbo Basic, Forth, Turbo Pascal 3 - 6, Dbase III Plus, 8086 with TASM.
Thankfully also in 1992, I got hold of Turbo C++ 1.0, and I was settled on my opinion about C.
You will find my nick on those archives at the C++/Pascal trenches side.