No me gusta de números mágicos.
Muchas personas consideran usar "sizeof" una buena práctica.
Leo Gutiérrez se refiere al uso de sizeof en esta linea:
char * arreglo
= malloc(sizeof(char) * i
);
Todo compilador que cumpla con el estándar de C debe evaluar "sizeof(char)" resultando en 1 y la multiplicación por este no tiene sentido ya que no afecta el resultado. Por ello se puede abreviar a:
En cuanto al tamaño máximo que puede tener un array este depende del compilador utilizado. Ello porque el estándar del lenguaje permite indicar el numero de elementos en un array mediante una expresión constante de tipo entero (cualquier tipo, por ejemplo "int" o "unsigned long") mayor que cero.
Lo que debe hacer el OP (el usuario
Principios en C) es revisar la documentación de su compilador.
Un saludo