As a Master's project, I am designing a simple operating system.  It is being designed to run in 16-bit Real Mode on an x86 architecture.  Ideally, I would like to develop this OS in C++, and only using assembly where necessary.  Thus far, I have a boot loader written in assembly, that loads a kernel that is a mix of C++ and asm.  My question is in regards to using C++.  As of now, it has compiled and can run, but I have not used any dynamic memory allocation.If I were using C, it would make sense to write malloc functions that would handle memory allocation, but in C++ the new keyword is used.  So...How does 'new' work behind the scenes to allocate memory, and how would I go about handling this?And as a corollary...Does it make sense to try to use C++ to take advantage of its higher level abstactions?  Or would it be more of a headache to use it and should I stick with C?Please provide rationale if you believe that C++ would not be a good choice.
OS Development in C++ Questions
operating systems
The new keyword hands off the actual allocation to operator new, which behaves rather similar to malloc: it gets memory from somewhere. The compiler will then do all the constructor magic. Therefore, the C++ compiler will expect the C++ runtime lib (or your code) to provide an implementation of operator new.It certainly makes sense to use C++ for certain abstractions. There's no reason why an OS should roll its own std::list<>. Exceptions are far more troublesome. In between there's a gradient from useful to useless stuff. std::complex ?  It works perfectly, but why would you need it?