Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Crear un espacio de memoria propio en C++

Estas en el tema de Crear un espacio de memoria propio en C++ en el foro de C/C++ en Foros del Web. Hola a todos, Quiero realizar en C++ un espacio de memoria propio. Es decir, definir un array de la forma "char memoria[tamano]", y cada vez ...
  #1 (permalink)  
Antiguo 06/05/2007, 12:05
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 279
Antigüedad: 19 años
Puntos: 2
Crear un espacio de memoria propio en C++

Hola a todos,

Quiero realizar en C++ un espacio de memoria propio. Es decir, definir un array de la forma "char memoria[tamano]", y cada vez que cree en mi programa un nuevo elemento de forma dinámica con "new", en vez de que el gestor de C++ reserve el espacio, hacerlo yo en ese array que he definido.

Es decir, reservar el espacio adecuado tanto si creo un array, como un elemento de una clase Persona (Persona p = new Persona). Para ello, ¿cómo puedo calcular el espacio que me va a ocupar un array o un elemento de una clase o lo que sea?

También tras hacer new, debo devolver un puntero al lugar del array donde he reservado el sitio, para así tenerlo accesible, ¿no?.

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 06/05/2007, 13:59
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
Re: Crear un espacio de memoria propio en C++

que tal,

si usas std::vector de la STL puedes evitarte de esos problemas ya que puedes ir aumentando el tamaño del array conforme quieras.

aqui hay un buen tutorial de como usarlo:
http://www.codeguru.com/Cpp/Cpp/cpp_...icle.php/c4027

saludos,
  #3 (permalink)  
Antiguo 06/05/2007, 14:40
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 279
Antigüedad: 19 años
Puntos: 2
Re: Crear un espacio de memoria propio en C++

Si, para definir lo que es la "memoria" usaré un vector.

Pero me refiero, yo se que si mi programa define un char, lo meto en mi memoria, y un char son 4bytes. Asi que... Tendré que tener un método que sea "coger_bloque", que sea el que "divida" mi vector de memoria en bloques. Es decir, cada cosa que defina, tiene un espacio dentro del vector y un puntero que apunta al principio de ese espacio, este espacio según lo que sea será más grande o menos.

¿Es correcto éste planteamiento?

Pero claro, si defino un objeto de una clase, tendré que "calcular" cuánto ocupa ese objeto. Si ese objeto tiene 2 atributos, tendré que suma lo que ocupan estos dos atributos, para ver el espacio total, ¿no?

Muchas gracias.
  #4 (permalink)  
Antiguo 07/05/2007, 11:35
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Crear un espacio de memoria propio en C++

Cita:
También tras hacer new, debo devolver un puntero al lugar del array donde he reservado el sitio, para así tenerlo accesible, ¿no?.
Sip...pero debes sobrecargar el operador para que te reserve el espacio dentro de tu arreglo estático. Este deberia estar manejado por otra clase, ya que de alguna manera necesitas saber cual espacio esta reservado y cual no.
Cita:
Pero claro, si defino un objeto de una clase, tendré que "calcular" cuánto ocupa ese objeto. Si ese objeto tiene 2 atributos, tendré que suma lo que ocupan estos dos atributos, para ver el espacio total, ¿no?
Nop, para eso esta el operador sizeof que te retorna el tamaño en bytes de una variable o un tipo (eso es lo que quieres). Por cierto un char ocupa 1 byte.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #5 (permalink)  
Antiguo 07/05/2007, 15:55
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
Re: Crear un espacio de memoria propio en C++

yo no entiendo muy bien lo que quieres hacer. O tal vez tu no me entendiste a mi.

No puedes calcular el tamaño de un arreglo dinamico. Pero si usas std::vector, si podras con el metodo size(), aprendelo a usar y tu uso de operadores como new y delete[] podrian reducirse a 0.

saludos,
  #6 (permalink)  
Antiguo 07/05/2007, 16:31
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 279
Antigüedad: 19 años
Puntos: 2
Re: Crear un espacio de memoria propio en C++

Hola, quizás no te he entendido bien.

Lo que quiero hacer es lo siguiente: Cada vez que haga un "new", lo que cree se va a almacenar en mi espacio de memoria que yo creo.
Por eso digo de calcular el tamaño de un objeto que defina de una clase determinada: por ejemplo, si tengo class Persona, y yo hago Persona p = new Persona(); esta Persona p se almacena en mi espacio de memoria, con toda la informacion que requiera (por eso digo lo de calcular su tamaño), y el new sobrecargado que cree yo, aparte de esa reserva d espacio, devolverá puntero a la zona reservada.

Saludos y gracias
  #7 (permalink)  
Antiguo 09/05/2007, 07:43
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Crear un espacio de memoria propio en C++

Cita:
Lo que quiero hacer es lo siguiente: Cada vez que haga un "new", lo que cree se va a almacenar en mi espacio de memoria que yo creo.
Precisamente lo que te comente arriba, no se por que lo quieres hacer de esa manera, imagino que son requerimientos del profesor o algo parecido.

La idea es que la sobrecarga del operador new te retorne un puntero al espacio de memoria que va a usar dentro de el espacio de memoria que creaste, no?

Entonces que guarde la clase dentro de ese espacio de memoria que ya estaba reservado con anterioridad. ¿Voy bien?

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:52.