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)