Bueno gracias a vuestra ayuda, he conseguido entender los arrays dinámicos, el caso es que he intentado crear un ejemplo de una matriz dinámica y redimensionarla.
La he redimensionado y funciona perfectamente, pero al redimensionarla, los 3 nuevos índices, cada subindices(punteros dentro de punteros), he hecho que sean de 30 elementos y no de 80, por lo que al referirme al elemento 35 me debería dar error, y no es así, funciona perfectamente,
#include <stdio.h>
#include <stdlib.h>
void main() {
int **p;
p=(int **)malloc(sizeof(int *)*5);
int x;
for(x=0;x<5;x++){
p[x]=(int *)malloc(sizeof(int)*80);
}
p[3][45]=10;
printf("El numero guardado es %d\n", p[3][45]);
p=(int **)realloc(p, sizeof(int *)*8);
int y;
for(y=5; y<8; y++){
p[y]=(int *)malloc(sizeof(int)*30);
}
p[6][35]=25;
printf("Después de redimensionar %d\n", p[6][35]);
free(p);
}
¿ Por que no da error? ¿he redimensionado mal la matriz?:
Gracias de antemano, saludos.
La memoria puede o no ser del programa. Si accedes a memoria del programa, no dará error. Si accedes a memoria a la que tu programa no puede acceder, puede dar error. No es fijo. Depende de las circunstancias.
Cita de: ivancea96 en 25 Agosto 2015, 19:17 PM
La memoria puede o no ser del programa. Si accedes a memoria del programa, no dará error. Si accedes a memoria a la que tu programa no puede acceder, puede dar error. No es fijo. Depende de las circunstancias.
Entonces, para que sirve redimensionar la matriz, ¿ para reservale una cantidad de memoria que solo va a usar la matriz y que así no hayan fallos ?
Gracias y saludos.
Utilizar memoria que no está reservada puede dar errores, no te asegura que no vaya a cambiar, y puede dañar el funcionamiento del programa.
Acceder a memoria que no reservaste puede hacer que modifiques memoria de otra variable de tu programa, por ejemplo.
Cita de: ivancea96 en 25 Agosto 2015, 20:28 PM
Utilizar memoria que no está reservada puede dar errores, no te asegura que no vaya a cambiar, y puede dañar el funcionamiento del programa.
Acceder a memoria que no reservaste puede hacer que modifiques memoria de otra variable de tu programa, por ejemplo.
Gracias ya me ha quedado claro.
Saludos.
yo creo en este caso lo mejor sería usar listas enlazadas. Creas una lista y añades y eliminas elementos a antojo.