This would naturally want malloc to know the type and count, eg: char[] x = malloc(char[], 100). That means no opportunity to screw it up (let the compiler turn that into the sizeof math to pass to the actual allocator).
If bounds checking is a performance bottleneck you could turn it off with compiler flags; that's not a valid argument against it.
But hey... all the various buffer overflows, RCEs, and various exploits are totally worth the minor performance gains /sarcasm.