Hi, i'm trying to do video windowing that is: 
show all frames from a video and also some sub-image from each frame. This sub-image can change size and be taken from a different position of the original frame.
So , the code i've written does basically this:
cvQueryFrame to get a new image from the video
Create a new IplImage (img) with sub-image dimensions ( window.height,window.width)
Create a new Cvmat (mat) with sub-image dimensions ( window.height,window.width)
CvGetSubRect(originalImage,mat,window) seizes the sub-image
transform Mat (cvMat) to img (IplImage)  using cvGetImage
my problem is that for each frame i create new IplImage and cvMat which take a lot of memory and when i try to free the allocated memory I get a segmentation fault or in the case of the CvMat the allocated space does not get free (valgrind keeps telling me its definetly lost space).
the following code does it:
int 
main(void){
    CvCapture* capture;
    CvRect window;
    CvMat * tmp;
    //window size
    window.x=0;window.y=0;window.height=100;window.width=100;
    IplImage * src=NULL,*bk=NULL,* sub=NULL;
    capture=cvCreateFileCapture( "somevideo.wmv");
    while((src=cvQueryFrame(capture))!=NULL){
        cvShowImage("common",src);
        //get sub-image
        sub=cvCreateImage(cvSize(window.height,window.width),8,3);
        tmp =cvCreateMat(window.height, window.width,CV_8UC1);
        cvGetSubRect(src, tmp , window);
        sub=cvGetImage(tmp, sub);
        cvShowImage("Window",sub);
        //free space
        if(bk!=NULL)
            cvReleaseImage(&bk);
        bk=sub;
        cvReleaseMat(&tmp);
        cvWaitKey(20);
        //window dimensions changes
        window.width++;
        window.height++;
    }
}
cvReleaseMat(&tmp); does not seem to have any effect on the total amount of lost memory, valgrind reports the same amount of "definetly lost" memory if i comment or uncomment this line.  
cvReleaseImage(&bk); produces a segmentation fault. notice i'm trying to free the previous sub-frame which i'm backing up in the bk variable. If i comment this line the program runs smoothly but with lots of memory leaks
I really need to get rid of memory leaks, 
can anyone explain me how to correct this or even better how to correctly perform image windowing? 
Thank you