std::strstreambuf:: ~strstreambuf
| I/O manipulators | ||||
| Print functions (C++23) | ||||
| C-style I/O | ||||
| Buffers | ||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(C++20)
|
||||
| Streams | ||||
| Abstractions | ||||
| File I/O | ||||
| String I/O | ||||
| Array I/O | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
| Synchronized Output | ||||
|
(C++20)
|
||||
| Types | ||||
| Error category interface | ||||
|
(C++11)
|
||||
|
(C++11)
|
| Public member functions | ||||
|
strstreambuf::~strstreambuf
|
||||
| Protected member functions | ||||
|
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