Tengo dos preguntas:¿Hay un asignador que use alloca y que sea compatible con C++ STL?
1) ¿Es posible implementar un asignador que use alloca para asignar memoria en la pila y que sea compatible con C++ STL?
Si hay un código disponible, puede hacerme feliz simplemente indicándome la URL. :-) Si no hay ningún código, tal vez pueda bocetar las funciones asignar y desasignar?
2) Si la respuesta a la pregunta anterior es 'sí', me gustaría entender cómo es posible asignar memoria en la pila para los miembros de la clase. Como ejemplo, considere un
std::vector<int, AllocaAllocator<int> >
y supongamos que una llamada de la función miembro 'redimensionar' de este vector primero llama 'deallocate' y luego 'asignar' del asignador.
El ámbito desde el cual se llama allocate es el del tamaño de la función miembro. ¿Esto no significa que la memoria asignada se elimina de la pila al final de esa llamada de función?
Saludos cordiales, Bjoern
No puede desasignar el espacio que ha asignado en la pila mediante alloca. La única forma de recuperar la memoria asignada por alloca es salir de la función. – Patrick
¿Esto significa que, si sale de una función, se libera toda la memoria asignada dentro de esa función en la pila a través de alloca? ¿Y esto implica que es imposible usar alloca para asignar memoria a los miembros de la clase? Por lo tanto, ¿es imposible escribir un asignador que use alloca? – Bjoern
Por favor, eche un vistazo a esta pregunta: "En busca de C++ STL-like vector class pero usando stack storage" (http://stackoverflow.com/q/354442) Ya hay algunos comentarios valiosos sobre ese tema. –