1) Why the new as a operator? Is there any special reason why it can't be a function like malloc?
2) How are we considering sizeof(),new are as a opearartors? I know + - * / -> , . etc.. are operators, which criteria satisfied by sizeof() since we are calling sizeof with function call operators "()".
because that was the fad when it was designed, to mix system-dependent, OS-dependent, and language-dependent things together into one glorious operator-overloadable mess. It cannot be a library function because such things don't have access to constructors and destructors, it has to be a language feature.