Siempre que definamos una variable y la inicialicemos (en el lenguaje C), ¿se almacenará en la RAM o en el disco duro?

Independientemente del lenguaje utilizado, la ubicación de una variable en cualquier instancia dada depende del estado del proceso al que pertenece esa variable. Si el proceso se encuentra actualmente en estado listo, en ejecución o anticipado, ese proceso estaría presente en la memoria primaria (RAM).

Hay una excepción si ha declarado la variable con alcance de registro. En tal caso, la variable residiría en una memoria de registro (CPU) y el proceso padre estaría presente en la memoria principal.

Si el proceso se encuentra en cualquier otro estado, el programador a largo plazo lo intercambia de la memoria principal y lo coloca en la memoria secundaria (disco duro). Por lo tanto, la ubicación de su variable cambia de acuerdo con su proceso principal.

Además, en caso de que esté utilizando un sistema uniprocesador hipotético (que tiene un solo proceso) con una memoria primaria realmente muy pequeña capaz de contener solo una instrucción del programa de usuario a la vez (el sistema operativo usa la parte restante) y la implementación de paginación, podría llegar a un punto cuando solo la variable está presente en la memoria principal y el programa restante está en la memoria secundaria.

Se almacenará en Ram. Las variables se almacenan en el disco duro u otros almacenamientos solo cuando ocurre una operación de escritura. Hasta entonces estará en la memoria principal. No hace falta decir que si su programa está utilizando la memoria de paginación de su disco duro, entonces es probable que estén en la memoria de paginación prestada del disco duro. Aún así, debe considerarlo como memoria primaria. Espero que esto responda a su pregunta.

Estará en la memoria secundaria hasta que no se procese y cuando comience a procesar estará en la RAM.