A malloc
, который всегда возвращает NULL, соответствует букве стандарта.Поэтому я предлагаю
/* always return NULL, following the letter but not the spirit
of the standard */
inline void *malloc(size_t sz)
{ errno = ENOMEM;
return NULL; }
Если скорость является вашим основным критерием, она достаточно эффективна.Я не утверждаю, что это полезно, но вы не просили о полезности.
Реальные malloc
являются сложными, потому что они пытаются быть полезными и эффективными.Они часто создаются поверх существующих системных вызовов (например, mmap (2) , munmap
в Linux и т. Д.) И часто пытаются повторно использовать освобожденную память.Изучите, например, соответствующий исходный код GNU libc или musl libc