new delete operators c with examples
Explore todo sobre los operadores nuevos / eliminados en C ++.
Ya hemos visto variables y matrices estáticas en C ++ en nuestros tutoriales anteriores.
En lo que respecta a la memoria asignada a las variables y matrices, es la memoria estática la que asigna el compilador en función del tipo de datos (en el caso de las variables) y las dimensiones proporcionadas para las matrices.
La memoria asignada por el compilador se asigna en la pila. Pero en la mayoría de los casos, es posible que no sepamos la cantidad exacta de memoria que necesitamos.
=> Lea la popular serie de capacitación en C ++ aquí.
Lo que haríamos es asignar y desasignar tanta memoria como queramos y también como y cuando queramos. Esto se hace asignando dinámicamente la memoria. A diferencia de la asignación estática, la memoria asignada dinámicamente se asigna en el montón.
La asignación de memoria dinámica es útil ya que podemos asignar memoria de tamaño variable que no podemos lograr con la memoria asignada por el compilador. Tenemos la flexibilidad de asignar memoria cuando la necesitamos y desasignarla cuando no la necesitamos.
Pero aparte de estos usos, también debemos tener en cuenta que en el caso de memoria asignada dinámicamente, es responsabilidad del usuario desasignar la memoria. Si nos olvidamos de desasignar la memoria, se produce una pérdida de memoria en la que la memoria no se desasigna hasta que finaliza el programa.
Esto puede resultar en el uso de demasiada memoria y, por lo tanto, provocar graves cuellos de botella.
Lo que vas a aprender:
- Asignación de memoria dinámica
- El 'nuevo' operador
- Uso del operador 'nuevo' con matrices
- El operador de eliminación
- Conclusión
- Lectura recomendada
Asignación de memoria dinámica
El lenguaje C usa las funciones 'malloc', 'calloc' y 'realloc' para asignar memoria de forma dinámica. Para desasignar la memoria asignada dinámicamente con estas funciones, utiliza la llamada de función 'libre'. El lenguaje C ++ también admite estas funciones del lenguaje C para asignar / desasignar memoria.
Aparte de estas funciones, C ++ introduce dos nuevos operadores que son más eficientes para administrar la memoria dinámica. Estos son el operador 'nuevo' para asignar memoria y el operador 'eliminar' para desasignar memoria.
En este tutorial, aprenderemos más sobre los operadores nuevos y eliminados en lenguaje C ++.
El 'nuevo' operador
El operador 'nuevo' asigna memoria para una variable o cualquier otra entidad en un montón.
La sintaxis general del operador 'nuevo' es:
|_+_|El tipo de datos mencionado anteriormente puede ser cualquier tipo de datos válido compatible con C ++. Puede ser un tipo de datos integrado o cualquier tipo de datos definido por el usuario, incluidas clases y estructuras.
Por ejemplo,
cómo abrir un archivo jar ejecutable|_+_|
En el ejemplo anterior, hemos declarado una variable de puntero 'ptr' a entero y la inicializamos a nulo. Luego, usando el operador 'nuevo' asignamos memoria a la variable 'ptr'. Si hay memoria disponible en el montón, la segunda instrucción será correcta. Si no hay memoria disponible, entonces el nuevo operador lanza la excepción 'std :: bad_alloc'.
Por tanto, es una mejor idea comprobar si el nuevo operador ha asignado correctamente la memoria antes de utilizar esta variable o entidad en el programa.
También podemos inicializar variables usando el nuevo operador de la siguiente manera:
VPN para netflix|_+_|
En el ejemplo anterior, la variable de puntero 'ptr' es la memoria asignada utilizando el nuevo operador y, al mismo tiempo, el valor asignado es 10. Esta es otra forma de inicialización en C ++.
Uso del operador 'nuevo' con matrices
Otro uso más del operador 'nuevo' es la asignación de memoria para matrices. Aquí especificamos el número de elementos que se asignarán a la matriz.
A continuación, se muestra un ejemplo de asignación de elementos de matriz mediante el operador 'nuevo':
|_+_|Aquí, el nuevo operador asigna 10 elementos continuos de tipo entero a la variable de puntero myarray y devuelve el puntero al primer elemento de myarray.
El operador de eliminación
La memoria asignada dinámicamente utilizando el nuevo operador tiene que ser liberada explícitamente por el programador. Para ello, contamos con el operador 'eliminar'.
La sintaxis general del operador de eliminación es:
|_+_|Entonces podemos liberar la memoria asignada a la variable ptr anterior de la siguiente manera:
|_+_|Esta declaración libera la memoria asignada a la variable 'ptr' de nuevo al grupo de memoria.
También podemos usar el operador de eliminación para liberar la memoria asignada a las matrices.
Por ejemplo,la memoria asignada a la matriz myarray anterior se puede liberar de la siguiente manera:
|_+_|Tenga en cuenta el operador de subíndice utilizado con el operador de eliminación. Esto se debe a que, como hemos asignado la matriz de elementos, necesitamos liberar todas las ubicaciones.
En cambio, si hubiéramos utilizado la declaración,
|_+_|Sabemos que myarray apunta al primer elemento de la matriz, por lo que la declaración anterior solo eliminará el primer elemento de la matriz. Usando el subíndice “()”, indica que la variable cuya memoria se está liberando es un arreglo y que toda la memoria asignada debe liberarse.
El siguiente ejemplo de programación muestra el uso de operadores nuevos y de eliminación en C ++.
|_+_|Producción:
memoria asignada correctamente
* ptr = 10
* var = 12
valores de myarray: 1 2 3 4 5 6 7 8 9 10
La captura de pantalla del mismo se muestra a continuación.
En el ejemplo de código anterior, hemos demostrado el uso de operadores nuevos y de eliminación. Hemos utilizado el operador 'nuevo' para asignar memoria para una variable, matrices y también para inicializar otra variable con un valor. Luego eliminamos estas entidades usando el operador de eliminación.
Conclusión
Todo esto se trata de los operadores nuevos y de eliminación de C ++ en lo que respecta a los tipos de datos estándar. También podemos usar operadores nuevos y de eliminación para tipos de datos definidos por el usuario como clases y estructuras.
Aprenderemos más sobre el uso de estos operadores para crear objetos cuando aprendamos programación orientada a objetos usando C ++.
=> Eche un vistazo a la guía para principiantes de C ++ aquí.
Lectura recomendada
- Ejemplos de operadores aritméticos y booleanos de script de shell de Unix
- MongoDB Actualizar y eliminar documento con ejemplos
- Operadores, tipos y ejemplos de C ++
- Operadores de Python
- Tutorial de Python DateTime con ejemplos
- Cortar comando en Unix con ejemplos
- Clasificación de burbujas en C ++ con ejemplos
- Sintaxis del comando Unix Cat, opciones con ejemplos