Quando uma condição de falta de memória é encontrada dentro do tempo de execução, chama ThrowOutOfMemory . Isso chama Exception :: GetOOMException , que constrói o objeto na pilha e o copia para uma instância global alocada estaticamente, que é lançada.
Esta não é a exceção gerenciada, porém, uma exceção de C ++ declarada em ex.h . As exceções do C ++ são convertidas em exceções gerenciadas no clrex.cpp , que contém o código para lançar especificamente a OutOfMemoryException gerenciada pré- alocada, originalmente alocada e construída em appdomain.cpp .
Nota: Alguns desses arquivos de origem são grandes e podem travar o navegador por alguns segundos enquanto carrega o realce da sintaxe.
Os sites de ligação que Tim Schmelter vinculou em um comentário sobre a outra resposta não estão relacionados ao tempo de execução da memória e à incapacidade de construir um objeto.