Вы не можете, больше, чем вы могли бы использовать stdio без возможности, что он вызывает malloc
, или аналогично многим другим компонентам в lib c. По сути, нет никаких причин, по которым ни одна из стандартных функций библиотеки не может использовать malloc
для внутреннего использования, хотя для многих это должно быть условно с запасными путями (потому что они не могут потерпеть неудачу или потому что они должны быть асинхронными c -signal-safe, et c.) И для лотов для них не имеет никакого смысла делать это в разумной реализации.
В любом случае, поскольку в отличие от stdio (где вы можете вместо этого выполняйте низкоуровневые операции fd) не существует переносимого API доступа к каталогу, который обычно не реализуется с помощью объекта буфера пользовательского пространства (DIR
), вы должны либо признать, что он использует malloc
или go с не Переносимый интерфейс нижнего уровня (на Linux, системный вызов SYS_getdents64
).
Один из вариантов в системах, позволяющий вам определить свой собственный malloc
, будет делать это и выделять его из фиксированного пула. или прямой mmap
или аналогичный, если есть причина, по которой вам нужно избегать того, что malloc
обычно делает в вашей системе.