Dynamic memory extensions
From cppreference.com
                    
                                        
                    < c | experimental
                    
                                                            
                    Extensions to the C Library Part II: Dynamic Allocation Functions, ISO/IEC TR 24731-2:2010, defines the following new components for the C standard library:
|    __STDC_ALLOC_LIB__  | 
   integer constant of type long indicating conformance level  (macro constant)  | 
|   Defined in header  
<stdio.h>  | 
|
|    opens a fixed-size memory buffer as an I/O stream  (function)  | 
|
|    opens a dynamically resized memory buffer as an I/O stream  (function)  | 
|
|    variants of sprintf etc that write to automatically-allocated buffer and return a pointer to it  (function)  | 
|
|    read from a stream into a dynamically-allocated buffer until the delimiter  (function)  | 
|
|    read from a stream into a dynamically-allocated buffer until end of line  (function)  | 
|
|   Defined in header  
<string.h>  | 
|
|    allocate a copy of a string  (function)  | 
|
|    allocate a copy of a string up to specified size  (function)  | 
|
This library extension also introduces assignment-allocation character m for use with %s, %[, and %c conversion specifiers in fscanf and fwscanf family of functions.
[edit] Notes
The functions fmemopen, open_memstream, open_wmemstream, getdelim, getline, strdup, strndup, and the extensions to fscanf are available in POSIX (ISO/IEC 9945:2003).
The functions asprintf and vasprintf are available in Linux Standard Base (ISO/IEC IS 23360:2006)