Namespaces
Variants

std::strstreambuf:: ~strstreambuf

From cppreference.net
virtual ~strstreambuf ( ) ;
(obsolète en C++98)
(supprimé en C++26)

Détruit un objet std::strstreambuf . Si l'objet gère un tampon alloué dynamiquement (l'état du tampon est "alloué") et si l'objet n'est pas gelé, alors désalloue le tampon en utilisant la fonction de désallocation fournie lors de la construction ou delete [ ] si aucune n'a été fournie.

Paramètres

(aucun)

Notes

Ce destructeur est généralement appelé par le destructeur de std::strstream .

Si str() a été appelé sur un strstream dynamique et que freeze(false) n'a pas été appelé après cela, ce destructeur provoque une fuite de mémoire.

Exemple

#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);
    } // destructeur appelé ici, tampon désalloué
    {
        std::strstreambuf buf(my_alloc, my_free);
        std::ostream s(&buf);
        s << 1.23 << std::ends;
        std::cout << buf.str() << '\n';
//      buf.freeze(false);
    } // destructeur appelé ici, fuite mémoire !
}

Sortie :

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