¿Con qué propósito debo usar std::get_temporary_buffer
? Estándar dice lo siguiente:¿Por qué necesito std :: get_temporary_buffer?
Obtiene un puntero al almacenamiento suficiente para almacenar hasta n objetos T adyacentes.
Pensé que el búfer se asignará a la pila, pero eso no es cierto. De acuerdo con el estándar C++, este búfer no es temporal. ¿Qué ventajas tiene esta función sobre la función global ::operator new
, que tampoco construye los objetos? ¿Tengo razón en que las siguientes afirmaciones son equivalentes?
int* x;
x = std::get_temporary_buffer<int>(10).first;
x = static_cast<int*>(::operator new(10*sizeof(int)));
¿Esta función solo existe para la sintaxis de azúcar? ¿Por qué hay temporary
en su nombre?
Un caso de uso se sugirió en el Dr. Dobb's Journal, July 01, 1996 para los algoritmos de ejecución:
Si no hay memoria intermedia puede ser asignado, o si es más pequeño que solicitó, el algoritmo sigue funcionando correctamente, simplemente se ralentiza .
FYI, 'std :: get_temporary_buffer' estará en desuso en C++ 17. – Deqing