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

Reservar memoria para N bytes en c++

Estas en el tema de Reservar memoria para N bytes en c++ en el foro de C/C++ en Foros del Web. Seguramente sea una tontería pero no soy capaz de hacerlo. Me explico, si hago esto: char *p=NULL; p=new char; Reservo memoria para un char. Sería ...
  #1 (permalink)  
Antiguo 19/09/2012, 05:26
 
Fecha de Ingreso: abril-2010
Mensajes: 20
Antigüedad: 14 años, 7 meses
Puntos: 0
Reservar memoria para N bytes en c++

Seguramente sea una tontería pero no soy capaz de hacerlo. Me explico, si hago esto:

char *p=NULL;
p=new char;

Reservo memoria para un char. Sería posible reservar memoria para N chars con new?
Por ejemplo en c creo que sería así:

p=(char*) malloc (n);


Muchas gracias!
  #2 (permalink)  
Antiguo 19/09/2012, 09:46
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 11 meses
Puntos: 25
Respuesta: Reservar memoria para N bytes en c++

es posible, debes indicar entre corchetes la cantidad de elementos, en tu caso N.

Código C++:
Ver original
  1. char *p= NULL;
  2.  
  3. //se pone entre corchetes la cantidad de elementos
  4. p= new char[101]//en caso de que n valga 100, 100 para la cadena de texto y 1 para el caracter nulo (segun c.conclase.net)

aca tenes mas informacion: http://c.conclase.net/curso/index.php?cap=013b
  #3 (permalink)  
Antiguo 20/09/2012, 04:59
 
Fecha de Ingreso: abril-2010
Mensajes: 20
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Reservar memoria para N bytes en c++

Muchas gracias.

Entiendo entonces que poniendo:

p=new char[N+1];


reservaría espacio para N chars. Pero podría ser variable?, es decir que dónde reservo memoria es en una función que recibe como parámetro N.
  #4 (permalink)  
Antiguo 20/09/2012, 09:30
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 11 meses
Puntos: 25
Respuesta: Reservar memoria para N bytes en c++

si si, no hay problema. Te voy a dejar un ejemplo con enteros, trata de resolverlo para char

Código C++:
Ver original
  1. #include <iostream>
  2. #include <ctime>
  3. #include <cstdlib>
  4. using namespace std;
  5.  
  6. void reservar_n_elementos(int N){
  7.    
  8.     cout<<endl;
  9.    
  10.     //se crea el arreglo con N elementos
  11.     int *arreglo= new int[N];
  12.    
  13.     for (int i=0; i<N; i++){
  14.         //se llena el arreglo
  15.         arreglo[i]= i + N*(rand()/20);
  16.         //se muestran los numeros obtenidos
  17.         cout<<arreglo[i]<<endl;
  18.     }
  19.    
  20. }
  21.  
  22. int main(int argc, char *argv[]) {
  23.     srand(time(NULL));
  24.    
  25.     reservar_n_elementos(5);   
  26.     reservar_n_elementos(20);
  27.     reservar_n_elementos(3);
  28.     reservar_n_elementos(14);
  29.    
  30.     return 0;
  31. }


saludos
  #5 (permalink)  
Antiguo 21/09/2012, 04:53
 
Fecha de Ingreso: abril-2010
Mensajes: 20
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Reservar memoria para N bytes en c++

Muchas gracias. Me ha sido de rgan ayuda. Un saludo!

Etiquetas: memoria, byte
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 19:19.