<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">All, <div><br></div><div>I have a MediaSink subclass I have created. In the afterGettingFrame() method, I have the following code: </div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">  <span style="color: #bd23a0">if</span> (!fHaveWrittenFirstFrame) {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 133, 23); "><span style="color: #000000">    </span>// If we have PPS/SPS NAL units encoded in a "sprop parameter string", prepend these to the file:</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">    <span style="color: #bd23a0">unsigned</span> numSPropRecords;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">    SPropRecord* sPropRecords = parseSPropParameterSets(fSPropParameterSetsStr, numSPropRecords);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">    <span style="color: #bd23a0">for</span> (<span style="color: #bd23a0">unsigned</span> i = <span style="color: #3724d4">0</span>; i < numSPropRecords; ++i) {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">      addData(start_code, <span style="color: #3724d4">4</span>, presentationTime);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">      addData(sPropRecords[i].sPropBytes, sPropRecords[i].sPropLength, presentationTime);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">    }</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">    <span style="color: #bd23a0">delete</span>[] sPropRecords;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">    fHaveWrittenFirstFrame = True; <span style="color: #008517">// for next time</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">  }</div><div><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; "><br></span></div><div><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; ">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. </span></div><div><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; "><br></span></div><div><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; ">Anyway, I have taken my app run it on Xcode, and this line pretty quickly crashes the app: </span></div><div><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; "><br></span></div><div><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; "><span class="Apple-style-span" style="font-family: Menlo; font-size: 11px; ">   </span><span class="Apple-style-span" style="font-family: Menlo; font-size: 11px; "> </span><span class="Apple-style-span" style="font-family: Menlo; font-size: 11px; "><span style="color: rgb(189, 35, 160); ">delete</span></span><span class="Apple-style-span" style="font-family: Menlo; font-size: 11px; ">[] sPropRecords;</span></span></div><div><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; "></span></div><div><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; "><br></span></div><div><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; ">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: </span></div><div><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; "><br></span></div><div><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">    <span style="color: #bd23a0">if</span> (sPropRecords)</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">    {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">        <span style="color: #bd23a0">delete</span>[] sPropRecords;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">    }</div><div><br></div><div>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:</div><div><br></div></span><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">    SPropRecord* sPropRecords = parseSPropParameterSets(fSPropParameterSetsStr, numSPropRecords);</div></div><div><br></div></div><div apple-content-edited="true"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">...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? </div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br></div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Thanks, </div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br></div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Brad<br><br>Brad O'Hearne<br>Founder / Lead Developer<br>Big Hill Software LLC<br><a href="http://www.bighillsoftware.com">http://www.bighillsoftware.com</a></div></div>
</div>

<br></div></body></html>