elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++] Duda con new y delete[] o delete Tratando de hacer matriz dinamica
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C++] Duda con new y delete[] o delete Tratando de hacer matriz dinamica  (Leído 3,698 veces)
capsulasinformaticas

Desconectado Desconectado

Mensajes: 15



Ver Perfil
[C++] Duda con new y delete[] o delete Tratando de hacer matriz dinamica
« en: 21 Marzo 2013, 16:01 pm »

Estaba investigando como hacer matrices dinamicas y en una parte lei que podia hacerlo con new, entonces yo lo implemente de esta forma.

Código
  1.    void crearMatriz(int **m) {
  2.            for (i=0; i<n; i++)
  3.            m[i] = new int[n];
  4.     }
  5.  
  6.    int main() {
  7.        int **matriz1;
  8.  
  9.        matriz1 = new int *[n];
  10.  
  11.            crearMatriz(matriz1);

Lo que al parecer me funciona correctamente, el problema es que no se como hacer el delete correspondiente (lei que era una buena practica de programacion hacer el delete aunque la mayoria de los S.O. actuales liberan la memoria al cerrar el programa), ¿alguien me ayuda?.


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: [C++] Duda con new y delete[] o delete Tratando de hacer matriz dinamica
« Respuesta #1 en: 21 Marzo 2013, 16:27 pm »

No solo es una buena práctica de programación, sino que debes hacerlo en programas más grandes cuando ya no necesites esa matriz (o malgastaras memoria).

Si para reservar la matriz tienes que hacer esto:

Código
  1. int** Matriz = new int*[n];
  2.  
  3. for (int i = 0; i < n;i++)
  4.    Matriz[i] = new int[n];

Para borrarla tendrás que hacerlo al reves:

Código
  1. for (int i = 0; i < n;i++)
  2.      delete[] Matriz[i];
  3.  
  4. delete[] Matriz;
  5.  


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: [C++] Duda con new y delete[] o delete Tratando de hacer matriz dinamica
« Respuesta #2 en: 21 Marzo 2013, 16:31 pm »

Así es como se utiliza;

Código
  1. #include <iostream>     // std::cout
  2.  
  3. struct MyClass {
  4.  MyClass() {std::cout <<"MyClass constructed\n";} //La utilizamos
  5.  ~MyClass() {std::cout <<"MyClass destroyed\n";}
  6. };
  7.  
  8. int main () {
  9.  MyClass * pt;
  10.  
  11.  pt = new MyClass[3]; //Creamos variable dinámica
  12.  delete[] pt; //Eliminamos
  13.  
  14.  return 0;
  15. }

Saludos
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: [C++] Duda con new y delete[] o delete Tratando de hacer matriz dinamica
« Respuesta #3 en: 21 Marzo 2013, 16:47 pm »

Él habla de matrices no de vectores...
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: [C++] Duda con new y delete[] o delete Tratando de hacer matriz dinamica
« Respuesta #4 en: 21 Marzo 2013, 16:58 pm »

Es lo mismo... lo que busca es el funcionamiento de delete

Lo que al parecer me funciona correctamente, el problema es que no se como hacer el delete correspondiente (lei que era una buena practica de programacion hacer el delete aunque la mayoria de los S.O. actuales liberan la memoria al cerrar el programa), ¿alguien me ayuda?.

Mientras el ejemplo solucione su problema...
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
capsulasinformaticas

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Re: [C++] Duda con new y delete[] o delete Tratando de hacer matriz dinamica
« Respuesta #5 en: 21 Marzo 2013, 17:52 pm »

No solo es una buena práctica de programación, sino que debes hacerlo en programas más grandes cuando ya no necesites esa matriz (o malgastaras memoria).

Si para reservar la matriz tienes que hacer esto:

Código
  1. int** Matriz = new int*[n];
  2.  
  3. for (int i = 0; i < n;i++)
  4.    Matriz[i] = new int[n];

Para borrarla tendrás que hacerlo al reves:

Código
  1. for (int i = 0; i < n;i++)
  2.      delete[] Matriz[i];
  3.  
  4. delete[] Matriz;
  5.  

¿Y eso me sirve aun que haya hecho aparte de lo anterior, esto:

Código
  1. for (i=0; i<n; i++)
  2. matriz1[i] = new int[n];

Que no solo seria un vector dinamico, si no que una matriz dinamica?.
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: [C++] Duda con new y delete[] o delete Tratando de hacer matriz dinamica
« Respuesta #6 en: 21 Marzo 2013, 17:56 pm »

Claro, si te fijas es lo mismo que has hecho antes pero al reves (y en vez de new poniendo delete claro).

La mejor forma de confirmarlo es intentar acceder a la posición (0,0), si la aplicación se cierra inesperadamente = Has tocado memoria que no deberías tocar = No tienes memoria reservada.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
capsulasinformaticas

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Re: [C++] Duda con new y delete[] o delete Tratando de hacer matriz dinamica
« Respuesta #7 en: 21 Marzo 2013, 18:03 pm »

Claro, si te fijas es lo mismo que has hecho antes pero al reves (y en vez de new poniendo delete claro).

La mejor forma de confirmarlo es intentar acceder a la posición (0,0), si la aplicación se cierra inesperadamente = Has tocado memoria que no deberías tocar = No tienes memoria reservada.

Gracias compadre, despues de publicar el mensaje lei bien y me di cuenta de que si estaba bien pero ya me habias respondido, gracias.

EDIT: No se me cerro, pero me dio que despues de liberar la memoria la posicion 0.0 era igual a 0, despues la posicion 1.0 era como 39232131, supongo que esta bien...
« Última modificación: 21 Marzo 2013, 18:44 pm por capsulasinformaticas » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Delete ITEM
Programación Visual Basic
NetWar 5 1,685 Último mensaje 24 Marzo 2008, 12:17 pm
por jmordenata
SOLUCIONADO: Delete en mysql
Bases de Datos
mk_137 0 2,655 Último mensaje 28 Diciembre 2010, 13:24 pm
por mk_137
DELETE de resultado de un SELECT
Bases de Datos
XafiloX 4 6,868 Último mensaje 11 Febrero 2011, 18:21 pm
por XafiloX
DELETE sql
Bases de Datos
andaluz 0 1,239 Último mensaje 1 Junio 2012, 19:20 pm
por andaluz
BAT, algun REG DELETE no se borra
Scripting
quico5 7 2,790 Último mensaje 19 Agosto 2012, 21:35 pm
por quico5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines