C эквивалентно C ++ get_teven_buffer?

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 не считается ответом;)

3

Решение

В стандарте C нет ничего похожего. Стандарт говорит это о get_teilitary_buffer:

Obtains a pointer to storage sufficient to store up to n adjacent T objects.

То есть вам не гарантировано получить место, которое вы запрашиваете. Большинство современных реализаций стандартной библиотеки C ++ реализуют get_teilitary_buffer () как простое выделение памяти на основе новых данных, которое в случае неудачи повторяется с меньшими и меньшими размерами выделения. Реализовать что-то с таким же эффектом в C не составит труда.

2

Другие решения

Как уже упоминалось на http://en.wikipedia.org/wiki/C_dynamic_memory_allocation, в разделе Реализации перечислено много реализаций, основанных на C, для динамического распределения памяти, что может быть рассмотрено как альтернатива C ++, может быть get_teilitary_buffer?

0

По вопросам рекламы [email protected]