Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::strstreambuf::freeze

      From cppreference.com
      <cpp‎ |io‎ |strstreambuf
       
       
       
       
      void freeze(bool freezefl=true);
      (deprecated in C++98)
      (removed in C++26)

      If the buffer uses dynamic allocation, sets the frozen status of the stream tofreezefl.

      While the stream is frozen,overflow() will not reallocate the buffer and thedestructor will not deallocate the buffer (thereby causing a memory leak).

      Contents

      [edit]Parameters

      freezefl - new value to set the freeze status to

      [edit]Return value

      (none)

      [edit]Notes

      Every call tostr() freezes the stream to preserve the validity of the pointer it returns. To allow the destructor to deallocate the buffer,freeze(false) needs to be called explicitly.

      [edit]Example

      In this example, initial allocation of the underlying array was for 16 bytes.

      Run this code
      #include <iostream>#include <strstream> int main(){{std::strstream dyn;// dynamically-allocated read/write buffer        dyn<<"Test: "<<1.23;// note: no std::ends to demonstrate append behaviorstd::cout<<"dynamic buffer holds "<< dyn.pcount()<<" characters: '";std::cout.write(dyn.str(), dyn.pcount())<<"'\n";// the buffer is now frozen, further output will not make the buffer grow        dyn<<"more output, hopefully enough to run out of the allocated space"<<std::ends;std::cout<<"After more output, it holds "<< dyn.pcount()<<" characters: '"<< dyn.str()<<"'\n";        dyn.freeze(false);// unfreeze before destructor}// memory freed by the destructor {char arr[20];std::ostrstream st(arr, sizeof arr);// fixed-size buffer        st<<1.23;// note: no std::ends to demonstrate append behaviorstd::cout<<"static buffer holds "<< st.pcount()<<" characters: '";std::cout.write(st.str(), st.pcount());std::cout<<"'\n";        st<<"more output, hopefully enough to run out of the allocated space"<<std::ends;std::cout<<"static buffer holds "<< st.pcount()<<" characters: '";std::cout.write(st.str(), st.pcount());std::cout<<"'\n";}// nothing to deallocate, no need to unfreeze,}

      Output:

      dynamic buffer holds 10 characters: 'Test: 1.23'After more output, it holds 16 characters: 'Test: 1.23more o'static buffer holds 4 characters: '1.23'static buffer holds 20 characters: '1.23more output, hop'

      [edit]See also

      disables/enables automatic reallocation
      (public member function ofstd::strstream)[edit]
      disables/enables automatic reallocation
      (public member function ofstd::ostrstream)[edit]
      [virtual]
      destructs astrstreambuf object, optionally deallocating the character array
      (virtual public member function)[edit]
      [virtual]
      appends a character to the output sequence, may reallocate or initially allocate the buffer if dynamic and not frozen
      (virtual protected member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/strstreambuf/freeze&oldid=170646"

      [8]ページ先頭

      ©2009-2025 Movatter.jp