1) Constructs a std::strstreambuf object: initializes the base class by calling the default constructor of std::streambuf, initializes the buffer state to "dynamic" (the buffer will be allocated as needed), initializes allocated size to the provided alsize, initializes the allocation and the deallocation functions to null (will use new[] and delete[])

2) Constructs a std::strstreambuf object: initializes the base class by calling the default constructor of std::streambuf, initializes the buffer state to "dynamic" (the buffer will be allocated as needed), initializes allocated size to unspecified value, initializes the allocation function to palloc and the deallocation function to pfree

3-5) Constructs a std::strstreambuf object in following steps:

a) Initializes the base class by calling the default constructor of std::streambuf

b) Initializes the buffer state to "constant" (the buffer is a user-provided fixed-size buffer)

c) Determines the number of elements in the user-provided array as follows: if n is greater than zero, n is used. If n is zero, std::strlen(gnext) is executed to determine the buffer size. If n is negative, INT_MAX is used.

d) Configures the std::basic_streambuf pointers as follows: If pbeg is a null pointer, calls setg(gnext, gnext, gnext + N). If pbeg is not a null pointer, executes setg(gnext, gnext, pbeg) and setp(pbeg, pbeg+N), where N is the number of elements in the array as determined earlier.

6-8) Same as strstreambuf((char*)gnext, n), except the "constant" bit is set in the buffer state bitmask (output to this buffer is not allowed)