Tengo un problema con un programa de C++. En un momento dado intento reservar memoria mediante el operador 'new', pero este lanza 'bad_alloc' y no entiendo por qué, ya que la cantidad de memoria que quiero reservar es relativamente baja para lo que tiene mi PC (3 GB).
Adjunto código, errores etc:
Cantidad de bytes (unsigned char) que intento reservar: 455282688 - 455,282,688 bytes
Datos extraídos del admin. de tareas durante el error:
Memoria física (KB)
Total: 3145068
Disponible: 1300596 - 1301394
Caché sistema: 1100432 (+ o -)
Mensaje de error por pantalla (con std::exception::what)
bad allocation
Código (indico el error):
Código:
...
typedef unsigned char uchar;
...
uchar* FrameLinkCamThread::getAttachedCapturedFrames(ulong &_totalSize){
ulong tSize=0;
for(uint i=0;i<this->numFramesCaptured;i++) tSize+=this->framesLegths[i];
uchar *res=NULL;
try{
res=new uchar[tSize]; //<==== Aquí esta el error
}catch(bad_alloc &e){
cout<<e.waht()<<endl;
char buff[256];
cin.getline(buff,256);
}
uint k=0;
for(uint i=0;i<this->numFramesCaptured;i++){
memcpy(&res[k],this->frames[i],this->framesLegths[i]);
k+=this->framesLegths[i];
}
_totalSize=tSize;
return res;
}
Nota: He intentado reservar en el main un vector igual que 'res' (que es el que da el error) y lo reserva sin problemas.
No entiendo cuál es el problema, ¿alguien puede ayudarme por favor?
Gracias, saludos.