No tengo capacidad ni ganas para entrar en estos enredos....así que lo hago
Ya en serio, era para comentar dos cosas.
Recuerdo que una vez vi una lista de fallos cometidos por programadores digamos "famosos". Estaba hecha en buen plan y solamente para decirnos que todo el mundo puede en cualquier momento cometer errores de principiante. En concreto recuerdo una pifia de John Carmack que creo que iba precisamente de olvidarse de liberar memoria.
Y también recuerdo un blog en el que se analizaba el código en ensamblador de unas pocas líneas de C++ que incluían entre otras cosas esto:
Código C++:
Ver originalfor (int i=0;i<100;i++)//un bucle sin nada mas
El resultado es que el compilador directamente ignoraba esta sentencia. Es un ejemplo de un trabajo de optimización que hacen por ti. De la misma forma que los lenguajes modernos hacen muchas tareas por nosotros.
Lo que sí es verdad es que C/C++ te obliga a saber dónde estas poniendo las zarpas, so pena de que el programa cause un estropicio. Así que obliga a profundizar en los conceptos de memoria y demás, ofreciendo más control.
Yo pienso que a veces es como saber obtener la raíz cuadrada de un número. Hay que saber hacerla a mano, porque hay que saber en qué consiste y como se secuencia la obtención de la misma, pero dudo que nadie con una calculadora a mano se pare a coger el lápiz y el papel.
Conclusión: como dice Spiderman, "Un gran poder conlleva una gran responsabilidad"