In C++ using delete to free memory obtained with malloc() doesn’t necessarily cause a program to blow up.
Should a warning or perhaps even an assertion failure should be produced if delete is used to free memory obtained using malloc()?
Why did Stroustrup not have this feature on C++?
No, but it does necessarily result in undefined behavior, which means that anything can happen, including the program blowing up or the program continuing to run in what appears to be a correct manner.
No. This is difficult, if not impossible, to check at compile time. Runtime checks are expensive, and in C++, you don’t get what you don’t pay for.
It might be a useful option to turn on while debugging, but really, the correct answer is just don’t mix and match them. I’ve not once had trouble with this.