20.6.11 Временные буферы [временный буфер] определяет два шаблона функций:
template<class T> pair<T*, ptrdiff_t> get_temporary_buffer(ptrdiff_t n) noexcept;
template<class T> void return_temporary_buffer(T* p);
Есть ли что-то подобное в стандарте C? Что-то вроде:
void * get_temporary_buffer(size_t);
void return_temporary_buffer(void *);
И нет, malloc
/free
не считается ответом;)
В стандарте C нет ничего похожего. Стандарт говорит это о get_teilitary_buffer:
Obtains a pointer to storage sufficient to store up to n adjacent T objects.
То есть вам не гарантировано получить место, которое вы запрашиваете. Большинство современных реализаций стандартной библиотеки C ++ реализуют get_teilitary_buffer () как простое выделение памяти на основе новых данных, которое в случае неудачи повторяется с меньшими и меньшими размерами выделения. Реализовать что-то с таким же эффектом в C не составит труда.
Как уже упоминалось на http://en.wikipedia.org/wiki/C_dynamic_memory_allocation, в разделе Реализации перечислено много реализаций, основанных на C, для динамического распределения памяти, что может быть рассмотрено как альтернатива C ++, может быть get_teilitary_buffer?