We did - it is still out there as the msvcrt##.dll - everything we did became the foundation of every c++ runtime library from 2003 onwards.
I really don't know why developers don't do the simple things such as pointer & memory buffer validation anytime they call any third party API, or integrate these basic checks in addition to try/catch blocks and structured exception handling in their own APIs. It doesn't take that much more effort or time to implement, and it doesn't impact performance more than 1-2%, which with modern CPU/GPU and memory speed is insignificant.