Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/04/2020, 07:38
prueba230683
 
Fecha de Ingreso: abril-2011
Mensajes: 170
Antigüedad: 13 años
Puntos: 68
Respuesta: validar un miembro de una estructura en c

Cita:
porque yo para asegurarme creo un arreglo de 1.000.000 si quiero, pero no necesariamente voy a tener cargado hasta un millón.
Para eso está la reserva dinámica de memoria en C. Lee acerca de las funciones malloc(), calloc(), realloc() y free().

Malloc te permite reservar un bloque de memoria de X bytes.
Calloc es lo mismo que malloc solo que te inicializa a 0 los valores (en vez de dejar valores aleatorios).
Free libera la memoria asignada mediante malloc.
Realloc es para asignar más memoria o reducirla después de haber usado malloc.

Por ejemplo, con este código puedes crear un array de 3 enteros:
Código C:
Ver original
  1. int* ptr; // declaramos puntero hacia entero
  2.  
  3. ptr = (int*)malloc(sizeof(int) * 3); // asignamos memoria para almacenar 3 enteros
  4.  
  5. ptr[0] = 123;
  6. ptr[1] = 456;
  7. ptr[2] = 789;
  8.  
  9. // ya no nos queda más memoria

Si más tarde ves que necesitas almacenar más de 3 enteros, puedes usar realloc:

Código C:
Ver original
  1. ptr = (int*)realloc(ptr, sizeof(int) * 5); // ahora podemos almacenar hasta 5 enteros sin perder la información que teníamos anteriormente
  2.  
  3. printf("%d %d %d", ptr[0], ptr[1], ptr[2]); // 123 456 789
  4.  
  5. // añadimos más elementos
  6.  
  7. ptr[3] = 1337;
  8. ptr[4] = 8888;
  9.  
  10. // ya no podemos añadir más

Así sucesivamente...

Docs:
https://es.cppreference.com/w/c/memory/malloc
https://es.cppreference.com/w/c/memory/realloc

Última edición por prueba230683; 08/04/2020 a las 07:49