Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Memoria, punteros y tipos (0x30XX)

Reglas sobre punteros, memoria dinamica, tipos, const y TADs.

Universidad Nacional de Río Negro

Reglas sobre punteros, memoria dinamica, tipos, const y TADs.

Tabla de reglas

ReglaTítuloAntipatrones integrados
0x3001hSiempre verificá la asignación exitosa de memoria dinámicaAP-0x3001h, AP-0x301Bh, AP-0x301Fh, AP-0x3023h, AP-0x3024h, AP-0x3026h, AP-0x3029h
0x3002hLiberá siempre la memoria dinámica y asigná NULL al puntero para mitigar punteros colgantesAP-0x3002b, AP-0x3002h, AP-0x3021h, AP-0x3022h, AP-0x3025h
0x3003hNo mezcles operaciones de asignación y comparación en una sola línea
0x3004hUtilizá typedef para definir tipos de estructuras con el sufijo _t
0x3005hMinimizá el uso de múltiples niveles de indirección (punteros a punteros)
0x3006hDocumentá la propiedad de los recursos al utilizar punteros
0x3007hLos argumentos de tipo puntero deben ser const siempre que la función no los modifique
0x3008hLos punteros nulos deben ser inicializados y comparados con NULL, no con 0AP-0x3008h, AP-0x301Dh
0x3009hDocumentá explícitamente los casos en que una función puede retornar NULL
0x300AhUtilizá cast explícito al convertir tipos de punterosAP-0x300Ah, AP-0x301Ch, AP-0x3020h, AP-0x3028h, AP-0x302Ah
0x300BhUsá siempre sizeof en las asignaciones de memoria dinámica, prefiriendo sizeof(*ptr)AP-0x3019h, AP-0x301Eh, AP-0x3027h
0x300ChVerificá siempre los límites de los arreglos antes de acceder a sus elementos
0x300DhUtilizá enum en lugar de ‘números mágicos’ para conjuntos de estados y valores constantesAP-0x300Dh
0x300EhDocumentá explícitamente el comportamiento de las funciones al manejar punteros nulos como argumentos
0x300FhLiberá la memoria en el orden inverso a su asignación
0x3010hLas variables que representan tamaños o índices de arreglos deben ser de tipo size_t
0x3011hSi una función recibe un puntero genérico para operaciones de solo lectura, la firma de la función debe utilizar const void*
0x3012hProhibición de aritmética de punteros sobre void*
0x3013hAsignación de memoria con sizeof sobre puntero en lugar del tipo apuntadoAP-0x300Fh
0x3014hProhibición de doble liberación de memoria (double free) sobre el mismo puntero
0x3015hReallocación segura: no sobreescribir el puntero original directamenteAP-0x3015h
0x3016hOrden incorrecto o sospechoso de argumentos en llamadas a memsetAP-0x301Ah
0x3017hOrden canónico de calificadores: ‘const tipo’ en lugar de ‘tipo const’
0x3018hInicialización idiomática de agregados con {0} en lugar de memset inmediato
0x3019hProhibición de comparar punteros contra constantes numéricas distintas de NULL o cero
0x301AhValidador de uso idiomático de tipos booleanos estándar
0x301BhProhibición de casts de tipo innecesarios o redundantes
0x301ChDetector de variables locales no inicializadas con modificador const
0x301DhDiseñá los Tipos de Datos Abstractos utilizando punteros opacos
0x301EhAsigná NULL al puntero tras liberar un recurso opaco en el ámbito del cliente
0x301FhNo compares numeros de punto flotante con igualdad exacta(regla promovida de antipatrón)