Leyendo a Fred Swartz en sus notas acerca de c++ consigo algo que me traía cabezón desde hace días, aunque me la llevo bastante bien con lenguajes de programación como python y php, mi dolor de cabeza siempre ha sido C/C++ con su manejo de memoria a bajo nivel y los benditos punteros que tanto detesto.
Una de las cosas que siempre me ha costado es manejar array dinámicos a mi completo y total antojo. Siempre se cometía errores como:
- Declarar el array con una cantidad de elementos en exceso (100000 posiciones) lo que constituye perdida de memoria y que si por andanzas de los ángeles de la programación son 100.001 posiciones a ser ocupadas aparecerá un error como "overflow memory .... no seas bruto chico".(Recordando a mi profesor† de matemáticas(2014))
- Declarar el array de esta forma conllevara a malgastar memoria y que existan colisiones entre los valores de memoria.
Debo primero inicializar un puntero del tipo que deseo utilizar, luego proceder a solicitar al usuario el tamaño de mi array usando cin o scanf (según los gustos), colocar todas las posiciones en 0, luego usarlo como normalmente y por ultimo eliminarlo.
int* a = NULL;
int n;
cin >> n;
a = new int[n];
for (int i=0; i<n; i++){
a[i]=0;
}
delete [] a;
a=NULL;
Espero les sea de utilidad.
/*
Comentario del Autor. Esta es la página más vista del blog.!!!!
*/
/*
Comentario del Autor. Esta es la página más vista del blog.!!!!
*/
Este comentario ha sido eliminado por el autor.
ResponderEliminarMuy sencilla tu explicación, en verdad muchas gracias
ResponderEliminaropino igual , me sacaste de un error
ResponderEliminarExcelente! Muchisimas gracias
ResponderEliminarGraciass! de verdad ya me sabia esto, pero de repente se olvida si no lo haces seguido!.. ojalá así hubiera más blogs como el tuyo! sigue así!
ResponderEliminarCon haber leido ese codigo, lo entendi sin necesidad de explicaciones
ResponderEliminarProbado y funciona, gracias.
ResponderEliminarDe nada :-)
Eliminar