Dear users, <div>I had implemented a function for programable filter . Inside function I am deleting already assigned point set but it leads to &quot;Bad access&quot;.</div><div><span>If I do not delete them, there is no problem. </span></div>

<div><span>Could someone explain me, why deletion is problem. I do not understand when data are fully copied after assignement and when are only passed by reference. </span></div><div><br></div><div>My code: </div>
<div><br></div><div>void <font color="#33cc00">filter_function</font>(void* arguments)</div><div><span>
<p>{</p>
<p>    <span>std</span>::<span>cout</span> &lt;&lt; <span>&quot;cos&quot;</span> &lt;&lt; <span>std</span>::<span>endl</span>;</p><p>    <span>vtkProgrammableFilter</span>* programmableFilter = </p>

<p><span>    </span><span>static_cast</span><span>&lt;</span>vtkProgrammableFilter<span>*&gt;(arguments);</span></p>
<p>    </p>
<p>    <span>vtkPoints</span>* inPts = programmableFilter-&gt;<span>GetPolyDataInput</span>()-&gt;<span>GetPoints</span>();</p>
<p>    <span>vtkIdType</span> numPts = inPts-&gt;<span>GetNumberOfPoints</span>();</p>
<p><span>    </span>vtkSmartPointer<span>&lt;</span>vtkPoints<span>&gt; newPts =</span></p>
<p><span>    </span>vtkSmartPointer<span>&lt;</span>vtkPoints<span>&gt;::</span><span>New</span><span>();</span></p>
<p>    newPts-&gt;<span>SetNumberOfPoints</span>(numPts);</p>
<p>    </p>
<p>    <span>for</span>(<span>vtkIdType</span> i = <span>0</span>; i &lt; numPts; i++)</p>
<p>    {</p>
<p>        <span>double</span> p[<span>3</span>];</p>
<p>        inPts-&gt;<span>GetPoint</span>(i, p);</p>
<p>        <span>if</span> (i == <span>0</span> ){ <span>cout</span> &lt;&lt; <span>&quot;first point = [&quot;</span> &lt;&lt; p[<span>0</span>] &lt;&lt; <span>&quot;,&quot;</span> &lt;&lt; p[<span>1</span>] &lt;&lt; <span>&quot;,&quot;</span> &lt;&lt; p[<span>2</span>] &lt;&lt; <span>&quot;]&quot;</span>&lt;&lt;<span>endl</span>; }</p>


<p>        <span>double</span> p_new[<span>3</span>];</p>
<p>        p_new[<span>0</span>] = p[<span>0</span>];</p>
<p>        p_new[<span>1</span>] = p[<span>1</span>];</p>
<p>        p_new[<span>2</span>] = <span>cos</span>(p[<span>0</span>]);</p>
<p>        newPts-&gt;<span>SetPoint</span>(i, p_new);</p>
<p><span>        </span>// Delete p_new ?     </p>
<p>    }</p>
<p>    </p>
<p>    programmableFilter-&gt;<span>GetPolyDataOutput</span>()-&gt;<span>CopyStructure</span>(programmableFilter-&gt;<span>GetPolyDataInput</span>());</p>
<p><span>    programmableFilter-&gt;</span>GetPolyDataOutput<span>()-&gt;</span>SetPoints<span>(</span>newPts<span>);</span></p>
<p><span> <font color="#ff0000">   </font></span><font color="#ff0000">//newPts-&gt;Delete(); // Lead to BUG </font></p>
<p>}</p><p><br></p><p>vtkSmartPointer<span>&lt;</span>vtkProgrammableFilter<span>&gt; filter = </span>vtkSmartPointer<span>&lt;</span>vtkProgrammableFilter<span>&gt;::</span><span>New</span><span>();</span></p>
<p></p><div><span>filter-&gt;</span>SetExecuteMethod<span>(</span><span><font color="#009900">filter_function</font></span><span>, </span>filter<span>);</span></div><div><span><br></span></div><div>Thanks in advance.</div>
<div>Jana</div>
<p></p></span></div>