void deallocate(pointer p, size_type n);
- requiere: p será un valor de puntero obtenida de asignar(). n será igual al valor pasado como el primer argumento a la invocación de allocate que devuelve p.
- Efectos: desasigna el almacenamiento al que hace referencia p.
- Observaciones: Utiliza :: operator delete (void *) (18.6.1), pero no se especifica cuando se llama a esta función.
lo que debería suceder si n
no es igual al valor pasado como el primer agrgument a la invocación de asignar los cuales regresó p
? No desasignar? ¿Lanzar std::bad_alloc
? ...
EDIT: Lo que en realidad quería decir con "lo que debería ocurrir" era: ¿Estaría bien que tirar o hacer valer en una implementación personalizada?
Btw .: Las implementaciones de Microsoft ignoran el tamaño pasado ... – 0xbadf00d
@FrEEzE - La implementación puede ignorar el parámetro porque sabe lo que ** tiene **. Otras implementaciones podrían usarlo, si no recuerdan el tamaño de la asignación en sí. –
Ignorar el tamaño es uno de los tipos válidos de comportamiento indefinido. –