Well the distinction is actually more than garbage collection as that only implies manual control of underlying RAM. With C you can also manipulate CPU registers, access CPU interrupts, call OS kernel functions to name a few. Because of this, you have access to all other underlying hardware (because they are all are connected to the same CPU) as much as the OS permits.
I always see it as a low level language in terms of how low it can access the underlying hardware.
My professor at my Uni would beg to differ though.
C has no concept of CPU registers, CPU interrupts, or OS kernel functions.
C has no access to the underlying hardware.
However, some C implementations provide extensions which do access these.
This is often in the form of inline assembly, and extensions to allow pointers to remain well defined when pointing outside of memory allocated within C.
Let us not confuse C with our preferred implementations of C.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Well the distinction is actually more than garbage collection as that only implies manual control of underlying RAM. With C you can also manipulate CPU registers, access CPU interrupts, call OS kernel functions to name a few. Because of this, you have access to all other underlying hardware (because they are all are connected to the same CPU) as much as the OS permits.
I always see it as a low level language in terms of how low it can access the underlying hardware.
My professor at my Uni would beg to differ though.
C has no concept of CPU registers, CPU interrupts, or OS kernel functions.
C has no access to the underlying hardware.
However, some C implementations provide extensions which do access these.
This is often in the form of inline assembly, and extensions to allow pointers to remain well defined when pointing outside of memory allocated within C.
Let us not confuse C with our preferred implementations of C.