Originally Posted by
grumpy
_SIZT is a vendor/implementation specific macro. To answer your points;
1) Microsoft engineers would have used it just in case implementation details of their compiler/library change so an allocator no longer works with size_t. IMHO, this is just unnecessary future-proofing: size_t is unlikely to disappear from standards in the foreseeable future.
2) No. For custom allocators, use whatever data types or structures are required so your allocator can manage memory as required. There is no obligation to use _SIZT, just as there is no obligation to use size_t. As a rule of thumb, however, it is better to code something portably unless you have a specific reason not to. So it's better to use standardised language features (eg size_t) rather than vendor-specific ones (_SIZT).