Todos los que programamos con C/C++, incluso los que nos consideramos experimentados, solemos emplear una significativa cantidad de tiempo depurando errores siempre relacionados con el mismo tema: la asignación dinámica de memoria. Siguiendo una serie de reglas básicas podemos reducir apreciablemente este tipo de fallos:
NULL
. Introducir un if(q) usa_q_como_sea;
nos ahorrará muchos disgustos.NULL
a todo puntero sin inicializar. Acostumbrarse a escribir char* q = NULL
es una buena costumbre.q = malloc(sizeof(X))
siempre un memset(q,0,sizeof(X))
, así evitaremos usar la basura que hay en la memoria sin inicializar.strncpy()
y strncat()
al operar sobre cadenas asignadas dinámicamente, así evitaremos escribir más allá del tamaño del bloque, en zonas de memoria que no nos pertenecen.sizeof()
. El tamaño de los tipos básicos y la alineación de los campos en las estructuras alteran el espacio que se ocupa.N
bytes dinámicamente, sólo podremos almacenar N-1
caracteres. Obvio, pero fuente de muchos quebraderos de cabeza.if(q) free(q)
ha de ser una costumbre antes de reutilizar una variable puntero.free(q)
irá siempre seguido de un q = NULL
, así evitaremos acceder a bloques de memoria que ya hemos liberado.q++
nos llevará a una dirección u otra dependiendo del tipo de q
.NULL
. Esta regla, primera y última, es fundamental y nunca suficientemente repetida. Comprobar siempre que un puntero no es NULL
antes de leer o escribir con él.Espero que estas indicaciones puedan ser de alguna utilidad a los que programan diariamente utilizando el lenguaje C.
El próximo 29 de marzo tendrá lugar en Kinepolis (Pozuelo de Alarzón/Madrid) una nueva edición una nueva edición del Microsoft Developer Day, un evento en el que se darán a conocer las herramientas más avanzadas de Visual Studio Team System, así como distintas técnicas de desarrollo sobre seguridad, aplicaciones Web y Windows.
Microsoft aprovechará tambien para descubrir algunas de las características de la próxima versión de Visual Studio, conocida con el nombre en clave Orcas, incluyendo las extensiones a los lenguajes Visual Basic y C# y el prometedor LINQ.
Para terminar, habrá una sesión sobre desarrollo de gadgets para Windows Vista y la entrega de premios del concurso Gadgetizate.
Publicado el 19/3/2007
Lo prometido es deuda, y aquí están los enlaces a la tercera y cuarta entrega de este curso sobre AJAX que he publicado en PC Actual.
En el número correspondiente al mes de marzo, que ya está en los quioscos, publico en PC Actual un artículo dedicado a Visual Studio Orcas, el sucesor de Visual Studio 2005 que todo parece indicar aparecerá en 2008. También publico este mes, en la revista Personal Computer, un artículo para no programadores en el que detallo cómo aprovechar que el proveedor donde se tiene una página ofrece PHP para agregar un contador y un calendario.
Torre de Babel - Francisco Charte Ojeda - Desde 1997 en la Web