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

memoria vector<double> C++

Estas en el tema de memoria vector<double> C++ en el foro de C/C++ en Foros del Web. Hola, estoy intenando ejecutar un cógido en c++ i me da el siguiente error: terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Aborted ...
  #1 (permalink)  
Antiguo 11/03/2011, 09:12
 
Fecha de Ingreso: marzo-2011
Mensajes: 1
Antigüedad: 13 años, 2 meses
Puntos: 0
memoria vector<double> C++

Hola,

estoy intenando ejecutar un cógido en c++ i me da el siguiente error:

terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted

Sacando operanciones sencillas he localizado el error dentro de este loop:

for(j=1;j<N;j++){
for(i=1;i<N;i++){
vector<double> F;
vector<double> l;
funcion_externa(F,l);
F.clear();
l.clear();
}
}


Para N<400 funciona i funciona todo correctamente, pero si hago N mayor se para. Entiendo que tengo un problema de memoria RAM. Estoy llamando una funcion externa que usa los punteros a los vectores de F y l, así que lo primero que me pasa por la cabeza es que reservo demasiado espacio de memoria.

Mi pregunta es, como lo hago para "eliminar" el puntero cada vez? Ya que los vectores solo me interesan dentro del loop.

Gracias!!
  #2 (permalink)  
Antiguo 11/03/2011, 11:04
 
Fecha de Ingreso: junio-2005
Mensajes: 93
Antigüedad: 18 años, 11 meses
Puntos: 9
Respuesta: memoria vector<double> C++

PRIMERO ES MALA LA COSTUMBRE DE ESTAR DECLARANDO LOS VECTORES EN CADA CICLO TE
RECOMIENDO

vector<double> F;
vector<double> l;

for(j=1;j<N;j++){
for(i=1;i<N;i++){
funcion_externa(F,l);
F.clear();
l.clear();
}
}

PODRIAS MOSTRAR UN POCO MAS DE CODIGO, SI ES POSIBLE LO QUE HACE FUNCION_EXTERNA, ADEMAS DEBES DE CONTEMPLAR QUE LOS INDICES EN C++ EMPIEZAN EN 0, Y NO EN 1

Etiquetas: memoria
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 01:37.