All, 

I have a MediaSink subclass I have created. In the afterGettingFrame() method, 
I have the following code: 

  if (!fHaveWrittenFirstFrame) {
    // If we have PPS/SPS NAL units encoded in a "sprop parameter string", 
prepend these to the file:
    unsigned numSPropRecords;
    SPropRecord* sPropRecords = parseSPropParameterSets(fSPropParameterSetsStr, 
numSPropRecords);
    for (unsigned i = 0; i < numSPropRecords; ++i) {
      addData(start_code, 4, presentationTime);
      addData(sPropRecords[i].sPropBytes, sPropRecords[i].sPropLength, 
presentationTime);
    }
    delete[] sPropRecords;
    fHaveWrittenFirstFrame = True; // for next time
  }

This particular code snippet was taken directly from the Live555 
H264VideoFileSink class implementation of its afterGettingFrame() method, so 
the exact code and usage context should be identical. 

Anyway, I have taken my app run it on Xcode, and this line pretty quickly 
crashes the app: 

    delete[] sPropRecords;

with the error that the "pointer being freed was not allocated". I then figured 
that there was something internal to the parseSPropParameterSets which might 
conditionally allocate sPropRecords. So I wrapped the delete in a conditional: 

    if (sPropRecords)
    {
        delete[] sPropRecords;
    }

The error was the same, and I confirmed in the debugger that sPropRecords was 
indeed a valid pointer. I then deleted out the offending delete line entirely, 
and ran the app. The app ran without crashing. However, when I profiled the app 
in Instruments, it reported a memory leak on this code line:

    SPropRecord* sPropRecords = parseSPropParameterSets(fSPropParameterSetsStr, 
numSPropRecords);

...which is obviously because there's no associated delete. So I believe it 
reasonable to conclude that there's a memory leak within this entity. My 
question -- does anyone have any insight into what the memory leak is and how 
to correct it? 

Thanks, 

Brad

Brad O'Hearne
Founder / Lead Developer
Big Hill Software LLC
http://www.bighillsoftware.com

_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to