Namespaces
Variants

std::strstreambuf:: ~strstreambuf

From cppreference.net
virtual ~strstreambuf ( ) ;
(obsoleto en C++98)
(eliminado en C++26)

Destruye un objeto std::strstreambuf . Si el objeto está gestionando un búfer asignado dinámicamente (el estado del búfer es "asignado") y si el objeto no está congelado, entonces desasigna el búfer utilizando la función de desasignación proporcionada en la construcción o delete [ ] si no se proporcionó ninguna.

Parámetros

(ninguno)

Notas

Este destructor normalmente es llamado por el destructor de std::strstream .

Si str() fue llamado en un strstream dinámico y freeze(false) no fue llamado después de eso, este destructor pierde memoria.

Ejemplo

#include <iostream>
#include <strstream>
void* my_alloc(size_t n)
{
    std::cout << "my_alloc(" << n << ") called\n";
    return new char[n];
}
void my_free(void* p)
{
    std::cout << "my_free() called\n";
    delete[] (char*)p;
}
int main()
{
    {
        std::strstreambuf buf(my_alloc, my_free);
        std::ostream s(&buf);
        s << 1.23 << std::ends;
        std::cout << buf.str() << '\n';
        buf.freeze(false);
    } // destructor llamado aquí, buffer desasignado
    {
        std::strstreambuf buf(my_alloc, my_free);
        std::ostream s(&buf);
        s << 1.23 << std::ends;
        std::cout << buf.str() << '\n';
//      buf.freeze(false);
    } // destructor llamado aquí, ¡fuga de memoria!
}

Salida:

my_alloc(4096) called
1.23
my_free() called
my_alloc(4096) called
1.23