Ничего из перечисленного!
Если вы обращаетесь к управляемым классам в C ++ / CLI, KeepAlive не поможет. Вам необходимо закрепить данные в памяти, чтобы они не перемещались после сборки мусора. Во всех этих примерах это делается неявно с помощью вызываемых вами функций.
KeepAlive имеет другую цель. Ссылки, хранящиеся в стеке, подлежат сборке мусора сразу после последней разыменования объекта. KeepAlive предотвращает это, продлевая время жизни вашего объекта до окончания вызова KeepAlive.