Memory management in the interpreter relies on 3 data structures: Block objects, Descriptor structures, Pointer objects and Descriptors. Blocks are associated with a descriptor that characterises the entire allocation, along with a few additional attributes: IsStatic indicates whether the block has static duration in the. interpreter. The lifetime of blocks is managed through 3 methods stored in the descriptor of the block: initializes the metadata which is store in the block, alongside actual data, and invokes the destructors of non-trivial objects.”]
Source: https://clang.llvm.org/docs/ConstantInterpreter.html