Array asignada dinámicamente C ++

Array asignada dinámicamente C ++

Las matrices son una estructura de datos muy importante en C ++ que sirven para mantener tipos similares de elementos. Las matrices se dividen principalmente en dos tipos diferentes i.mi. estático y dinámico. Las matrices estáticas son las cuyo tamaño está predefinido dentro del código, mientras que las matrices dinámicas son las que se definen en el tiempo de ejecución. En este artículo, hablaremos explícitamente sobre las matrices dinámicas en C++. Además, prestaremos especial atención a su asignación y traficación compartiendo un ejemplo detallado con usted en Ubuntu 20.04.

Matrices asignadas dinámicamente en c++

Ya hemos declarado que el tamaño de una matriz dinámica se define en el tiempo de ejecución. Sin embargo, uno podría preguntarse por qué necesitamos las matrices asignadas dinámicamente en primer lugar cuando podemos usar convenientemente las matrices estáticas? Bueno, a veces, te encuentras con tales situaciones en las que el tamaño de una matriz se desconoce inicialmente. En estos casos, puede adquirir el tamaño de la matriz como entrada del usuario en tiempo de ejecución.

Pero esto no es posible con las matrices estáticas, ya que el tamaño de una matriz estática una vez definida dentro de un código no se puede cambiar. Aquí es donde entran en juego las matrices asignadas dinámicamente que pueden definir las matrices de cualquier tamaño deseado en el tiempo de ejecución. Las matrices dinámicas en C ++ se pueden crear fácilmente con la "nueva" palabra clave. La sintaxis exacta se aclarará más adelante en este artículo.

Sin embargo, un punto importante a tener en cuenta aquí es que las matrices estáticas siempre se crean en la pila de su sistema y su sistema mismo asume la responsabilidad de liberar su pila una vez que su programa termina. Por otro lado, las matrices asignadas dinámicamente siempre se crean en el montón y debe liberar manualmente la memoria ocupada por una matriz dinámica. Ahora, debe ver el ejemplo que se analiza a continuación para comprender el uso de las matrices asignadas dinámicamente.

Usando las matrices asignadas dinámicamente en C ++ en Ubuntu 20.04

En este ejemplo, queremos enseñarle el uso de las matrices asignadas dinámicamente en C++. Le diremos cómo puede declarar e inicializar una matriz dinámica en tiempo de ejecución. Luego, mostraremos los elementos de la matriz asignada dinámicamente. Finalmente, le mostraremos cómo puede repartir la memoria ocupada por la matriz dinámica en C++. Para aprender todo esto, tendrá que ver el código que se muestra en la siguiente imagen:

En este programa C ++, tenemos nuestra función "Main ()" en la que hemos definido un "NUM" entero "NUM". Este número entero corresponderá al tamaño de nuestra matriz dinámica que vamos a crear más tarde. Luego, mostramos un mensaje en el terminal pidiéndole al usuario que ingrese cualquier tamaño de su elección para la matriz dinámica. Después de eso, tomamos ese tamaño como entrada del usuario. Luego, con la ayuda de la declaración "int *array = new int (num)", declaramos una matriz dinámica en tiempo de ejecución que tiene el tamaño igual a la variable "NUM". "Array" se refiere al nombre de esta matriz.

Después de eso, hemos mostrado un mensaje en la terminal nuevamente pidiéndole al usuario que ingrese los elementos de esa matriz. Este mensaje es seguido por un bucle "para" que itera hasta el tamaño de la matriz I.mi. numer. Dentro de este bucle, tomamos los elementos de esa matriz dinámica como entrada del usuario.

Una vez que se llenó la matriz dinámica, queríamos mostrar sus elementos en el terminal para el cual mostramos un mensaje por primera vez con la ayuda de la declaración "Cout". Luego, tenemos otro bucle "para" que nuevamente itera a través del tamaño de la matriz dinámica. Dentro de este bucle, simplemente hemos mostrado los elementos de matriz en la terminal. Después de eso, queríamos desear la memoria ocupada por esta matriz dinámica para la cual hemos utilizado la declaración "Eliminar [] matriz". Finalmente, para estar en el lado seguro, hemos utilizado la instrucción "array = null" para eliminar también la referencia nula de la matriz dinámica cuya memoria acabamos de reparar.

Después de escribir este código, cuando lo compilamos y ejecutamos, primero nos pidieron ingresar el tamaño de la matriz dinámica. Queríamos que nuestra matriz dinámica fuera de tamaño "5" como se muestra en la imagen a continuación:

Tan pronto como entramos en el tamaño de nuestra matriz dinámica, se nos pidió que lo llenáramos. Para hacerlo, ingresamos los números del 1 al 5 como se muestra en la siguiente imagen:

Tan pronto como presionamos la tecla ENTER después de poblar nuestra matriz dinámica, sus elementos se imprimieron en el terminal. Además, la desasignación de la memoria dinámica también tuvo lugar debido a lo cual una notificación al respecto también apareció en el terminal como se muestra en la imagen a continuación:

Ahora, modificaremos el mismo código ligeramente. Hasta ahora, hemos aprendido cómo podemos inicializar una matriz dinámica en C ++ y mostrar sus elementos en el terminal. Aunque también hemos incorporado el código para desastrar esta memoria en nuestro programa, sin embargo, aún no estamos seguros de si la memoria dinámica ocupada se ha desaconsejado con éxito o no. Para hacer esto, intentaremos acceder a una parte de esa memoria dinámica después de desanimarla. Si se accede con éxito, entonces significará que la distribución de memoria no ha tenido lugar correctamente.

Sin embargo, si encontramos algún mensaje de error al acceder a esa memoria después de desanimarla, eso significará que nuestra memoria dinámica ocupada ahora se ha desaconsejado con éxito. Debe echar un vistazo al siguiente código modificado para comprender esto:

En este código C ++ modificado, simplemente hemos agregado una línea al final de nuestro programa I.mi. cout<

Cuando compilamos y ejecutamos este código, funcionó perfectamente bien, sin embargo, tan pronto como se ejecutó esta última línea, se generó un error en referencia a una falla de segmentación que de hecho significa que está tratando de acceder a una ubicación de memoria que ya no existe. Esto se muestra en la imagen adjunta.

Significa que la distribución de nuestra matriz dinámica ha tenido lugar con éxito. Esta salida también implica que el intento de acceder a una ubicación de memoria que ya no existe solo resulta en un error de tiempo de ejecución y no un error de compilación. Significa que dicho código siempre se compilará correctamente y no podrá detectar tal error hasta que ejecute su código.

Conclusión

Este artículo tenía como objetivo enseñarle el uso de las matrices asignadas dinámicamente en C ++ en Ubuntu 20.04. Para eso, primero destacamos la necesidad de usar las matrices asignadas dinámicamente en C++. Luego, lo guiamos a través de un ejemplo detallado que explicó cómo puede crear y tratar con matrices dinámicas en C++. Además, también compartimos el método de desgarrar las matrices dinámicas. Después de pasar por esta guía, seguramente obtendrá una comprensión básica de tratar con matrices dinámicas en C++.