3

20.6.11 一時バッファー [temporary.buffer] は、2 つの関数テンプレートを定義します。

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は答えとしてカウントされません ;)

4

2 に答える 2

2

C標準には似たようなものはありません。標準では、get_temporary_buffer について次のように述べています。

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

つまり、要求したスペースを確保できる保証はありません。今日のほとんどの C++ 標準ライブラリの実装では、単純な新しいベースのメモリ割り当てとして get_temporary_buffer() を実装しています。これが失敗した場合は、割り当てサイズを小さくして繰り返します。C で同じ効果を持つものを実装することは難しくありません。

于 2012-10-10T05:14:25.070 に答える
0

http://en.wikipedia.org/wiki/C_dynamic_memory_allocationで述べたように、実装のセクションには、動的メモリ割り当てのために C に基づく多くの実装がリストされています。

于 2012-10-10T05:16:10.053 に答える