The default buffer size for basic_filebuf in libstdc ++

Does anyone know the default buffer size for basic_filebuf in libstdc ++ from GNU GCC? I know the pubsetbuf () member function, and I'm sure the buffer size is determined by the implementation. Inside C it's simple, take BUFSIZ from <cstdio> .

Maybe the variable is called extern_buf , XSIZE , intern_buf, or ISIZE ?

+2
c ++ buffer
Apr 27 2018-12-12T00:
source share
2 answers

I found him. C ++ takes BUFSIZ from C (see). The fstream and fstream.tcc files include the basic_filebuf class.

Note: LIBSTDC ++ from GCC

from fstream file

 #include <istream> #include <ostream> #include <bits/codecvt.h> #include <cstdio> // For BUFSIZ #include <bits/basic_file.h> // For __basic_file, __c_lock #ifdef __GXX_EXPERIMENTAL_CXX0X__ #include <string> // For std::string overloads. #endif /** * Actual size of internal buffer. This number is equal to the size * of the put area + 1 position, reserved for the overflow char of * a full area. */ size_t _M_buf_size; 

from fstream.tcc file

 template<typename _CharT, typename _Traits> basic_filebuf<_CharT, _Traits>:: basic_filebuf() : __streambuf_type(), _M_lock(), _M_file(&_M_lock), _M_mode(ios_base::openmode(0)), _M_state_beg(), _M_state_cur(), _M_state_last(), _M_buf(0), _M_buf_size(BUFSIZ), _M_buf_allocated(false), _M_reading(false), _M_writing(false), _M_pback(), _M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false), _M_codecvt(0), _M_ext_buf(0), _M_ext_buf_size(0), _M_ext_next(0), _M_ext_end(0) { if (has_facet<__codecvt_type>(this->_M_buf_locale)) _M_codecvt = &use_facet<__codecvt_type>(this->_M_buf_locale); } 
+1
Apr 27 2018-12-12T00:
source share

8 Kilobits

It may vary depending on the implementation. I was curious because I started a new personal project. My search began at stdio.h due to Peter's answer. Plain:

cat /usr/include/stdio.h | grep -i bufsiz cat /usr/include/stdio.h | grep -i bufsiz gave an override.

grep -rwnl /usr/include/ -e first _IO_BUFSIZ (defined in libio.h ) was added, followed by _G_BUFSIZ (defined in _G_config.h ). Alterations stopped there.

grep -i _g_bufsiz /usr/include/_G_config.h

+1
Mar 04 '16 at 13:58 on
source share



All Articles