Problème avec un delete[]

Problème avec un delete[] - C++ - Programmation

Marsh Posté le 18-01-2004 à 02:07:09    

Bonjour à tous,
 
voici le code qui me pose problème à l'éxcution (ça sert à convertir des images d'une vidéo en bitmaps...
 

Code :
  1. for (LONGLONG position = tps_start; position < tps_end; position += duree_frame)
  2. {
  3.         pSeek->SetPositions(
  4.                 &position,
  5.                 AM_SEEKING_AbsolutePositioning,
  6.                 NULL,
  7.                 AM_SEEKING_NoPositioning);
  8.         long evCode;
  9.         pControl->Run();
  10.         pEvent->WaitForCompletion(INFINITE, &evCode);
  11.         pControl->Pause();
  12.        
  13.         OAFilterState state = State_Paused;
  14.         pControl->GetState(INFINITE, &state);
  15.         AM_MEDIA_TYPE mt;
  16.         BITMAPINFO  BmpInfo;
  17.         HBITMAP hBitmap = NULL;
  18.         HRESULT hr = pGrabber->GetConnectedMediaType(&mt);
  19.         if (FAILED(hr))
  20.         {
  21.                 ShowMessage("Impossible de se connecter au type du media" );
  22.                 return;
  23.         }
  24.         long cbBuffer;
  25.         hr = pGrabber->GetCurrentBuffer(&cbBuffer, NULL);
  26.         if (FAILED(hr))
  27.         {
  28.                 ShowMessage("Impossible de récupérer la taille du buffer" );
  29.                 return;
  30.         }
  31.         BYTE *pBuffer = new BYTE[cbBuffer];
  32.         VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)mt.pbFormat;
  33.         CopyMemory(&BmpInfo.bmiHeader, &pVideoHeader->bmiHeader,sizeof(BITMAPINFOHEADER));
  34.         hBitmap = CreateDIBSection(0,&BmpInfo,DIB_RGB_COLORS,(void**)&pBuffer,NULL,0);
  35.         hr = pGrabber->GetCurrentBuffer(&cbBuffer, (long*)pBuffer);
  36.         if (FAILED(hr))
  37.         {
  38.                 ShowMessage("Impossible de récupérer le buffer" );
  39.                 return;
  40.         }
  41.         Graphics::TBitmap *bmp = new Graphics::TBitmap();
  42.         bmp->Handle = hBitmap;
  43.         AnsiString path = dir_images + ExtractFileName(path_sequence) + "_" + IntToStr(position / duree_frame) + ".bmp";
  44.         bmp->SaveToFile(path);
  45.         delete bmp;
  46.         //delete[] pBuffer;
  47.        
  48.         DeleteObject(hBitmap);
  49.         index++;
  50.         pourcent = index *100 / nbre_frames;
  51.         Application->ProcessMessages();
  52. }


 
Le problème vient du delete[] pBuffer;
 
Si je le laisse, le programme plante dès la fin de la première boucle...
 
Si je l'enlève, on me dit (forcèment) que je n'ai pas supprimé des variables que j'ai crée avec new...
 
Il est où le problème?
 
Merci d'avance...

Reply

Marsh Posté le 18-01-2004 à 02:07:09   

Reply

Marsh Posté le 18-01-2004 à 04:21:33    

createDibSection te renvoie le pointeur dont tu as besoin.
Pas besoin de faire de new..
 
LeGreg
 

Reply

Marsh Posté le 18-01-2004 à 10:20:42    

désolé, c'est plus fort que moi, devant ce genre de truc, je bloque complets

Reply

Marsh Posté le 18-01-2004 à 11:31:04    

LeGreg a écrit :

createDibSection te renvoie le pointeur dont tu as besoin.
Pas besoin de faire de new..
 
LeGreg
 
 


 
Parfait, merci!!

Reply

Marsh Posté le 18-01-2004 à 11:31:18    

taz a écrit :

désolé, c'est plus fort que moi, devant ce genre de truc, je bloque complets


 
Et pourquoi?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed