Siempre supe que las variables de tipo de referencia se almacenan en el montón, mientras que las variables de tipo de valor se almacenan en la pila. Recientemente, encontré esta imagen que dice que ints, doubles, strings, etc. son tipos de valor, mientras que las funciones y los cierres son tipos de referencia: 
Ahora estoy realmente confundido. Entonces, ¿dónde se guardan los enteros, dobles, cadenas, etc. cuando se definen dentro de una clase, también conocida como tipo de referencia? Del mismo tipo, ¿dónde se guardan los cierres de las funciones cuando se definen dentro de una estructura, también conocida como tipo de valor?