Во-первых, как уже говорили все остальные, не существует переносимого способа узнать размер распределения, если вы не сохраните эту информацию.
Все, что имеет значение, это реализация стандартной библиотеки C. Большинство библиотек сохраняют только размер памяти, выделенной для указателя, который обычно больше размера, который запрашивает ваша программа. Позволить библиотеке сохранить запрошенный размер - плохая идея, потому что это требует дополнительной памяти, и порой мы не заботимся о запрошенном размере.
Строго говоря, запись запрошенного размера НЕ является особенностью компилятора. Иногда это происходит потому, что компилятор может переопределить часть стандартной библиотеки и переопределить системную настройку по умолчанию. Однако я бы не стал использовать запрошенный размер записи в библиотеке, потому что он, вероятно, будет занимать больший объем памяти по причине, указанной выше.