Soy un programador nuevo en c, recientemente me mudé de python, pero todavía me gusta desafiarme a mí mismo con proyectos bastante ambiciosos (como un programa de ajedrez), y descubrí que mi computadora sufre una cantidad inusual de BSOD, tanto cuando estoy ejecutando un programa y no (es cierto que intentar usar la totalidad de mi memoria como una tabla hash puede no haber sido la mejor idea).
Entonces, mi pregunta es, ¿es probable que esto sea causado por mi código c de mierda, o es más probable que mi computadora portátil con exceso de trabajo de 3 años sea la culpable? Si pudiera ser el código, ¿cuáles son las cosas importantes que debo evitar para evitar esto?
BSOD generalmente contiene información sobre qué lo causó.
La información que contiene y cómo se muestra exactamente depende de la versión de Windows que esté ejecutando.
Como se puede ver en la lista aquí:
https://hetmanrecovery.com/recovery_news/bsod-errors
La mayoría de los errores de BSOD provienen del código del dispositivo/controlador/kernel, y no del típico programa de usuario.
Dicho esto, podría ser posible activar BSOD si su código usa una API de Windows de nivel particularmente bajo, especialmente si lo ejecuta con privilegios de administrador.
Tenga en cuenta que el simple hecho de llenar la memoria dará como resultado que las asignaciones de su programa fallen, y posiblemente su programa, pero no todo el sistema operativo, fallará.
Además, Windows impone límites sobre cuánto puede asignar un proceso individual.
Una nota final:
El "portátil de 3 años" no proporciona suficiente información para decir nada sobre su hardware, ya que hay diferentes niveles de portátiles disponibles, y algunos de los de gama alta de 3 años seguirán teniendo un mejor rendimiento que uno de nivel medio comprado ayer.
Como medida de solución de problemas, recomendaría hacer una copia de seguridad de sus datos, hacer una instalación limpia de su sistema operativo (también conocido como "formatear la máquina") y luego asegurarse de que todos sus controladores estén actualizados.
También puede probar herramientas de diagnóstico de hardware, como memtes86, verificar SMART en su almacenamiento, etc.
Se supone que no es posible que cualquier cosa que haga en un programa ordinario de "espacio de usuario" bloquee toda la computadora. Algo más también debe estar mal. Aquí hay algunas posibilidades:
Si está haciendo que la computadora haga un trabajo intensivo de CPU y RAM durante períodos prolongados, puede forzar el hardware hasta el punto en que falle un componente marginalmente defectuoso. Por lo general, la falla es la RAM, la fuente de alimentación o los ventiladores de refrigeración.
Asegúrese de que su fuente de alimentación esté clasificada para todo el kit que tiene, funcionando simultáneamente. Asegúrese de tener suficiente flujo de aire para la cantidad de calor que está generando; busque disipadores de calor obstruidos con polvo y ventiladores que no estén girando. Si tiene más de una memoria RAM, saque una a la vez y vea si eso hace que el problema desaparezca.
Me gustaría decirle que obtenga RAM de corrección de errores si aún no la tiene, pero por razones exasperantes de diferenciación en el mercado, también tendría que reemplazar la placa base y la CPU. Todavía vale la pena hacerlo, a la larga, pero equivale a reemplazar toda la computadora.
Es posible que esté notando un error en el sistema operativo o en los controladores. El culpable más probable es el controlador de GPU, especialmente si su programa hace algo gráfico. Lamentablemente, todo lo que puede hacer al respecto es asegurarse de que esté completamente reparado.