Function block instances are stored as one block in memory. This is necessary so that
the same code can work on different instances. If a variable is marked with RETAIN
in a function block, then each instance of the function block is protected with all
variables. This is also true for the variables of the function block that are not
marked this way. However, non-volatile memory is not available to the same extent
as main memory.
A function block with a pointer to an instance in SRAM as a variable is not stored in the protected memory.