Dear users, <div>I had implemented a function for programable filter . Inside function I am deleting already assigned point set but it leads to "Bad access".</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> << <span>"cos"</span> << <span>std</span>::<span>endl</span>;</p><p> <span>vtkProgrammableFilter</span>* programmableFilter = </p>
<p><span> </span><span>static_cast</span><span><</span>vtkProgrammableFilter<span>*>(arguments);</span></p>
<p> </p>
<p> <span>vtkPoints</span>* inPts = programmableFilter-><span>GetPolyDataInput</span>()-><span>GetPoints</span>();</p>
<p> <span>vtkIdType</span> numPts = inPts-><span>GetNumberOfPoints</span>();</p>
<p><span> </span>vtkSmartPointer<span><</span>vtkPoints<span>> newPts =</span></p>
<p><span> </span>vtkSmartPointer<span><</span>vtkPoints<span>>::</span><span>New</span><span>();</span></p>
<p> newPts-><span>SetNumberOfPoints</span>(numPts);</p>
<p> </p>
<p> <span>for</span>(<span>vtkIdType</span> i = <span>0</span>; i < numPts; i++)</p>
<p> {</p>
<p> <span>double</span> p[<span>3</span>];</p>
<p> inPts-><span>GetPoint</span>(i, p);</p>
<p> <span>if</span> (i == <span>0</span> ){ <span>cout</span> << <span>"first point = ["</span> << p[<span>0</span>] << <span>","</span> << p[<span>1</span>] << <span>","</span> << p[<span>2</span>] << <span>"]"</span><<<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-><span>SetPoint</span>(i, p_new);</p>
<p><span> </span>// Delete p_new ? </p>
<p> }</p>
<p> </p>
<p> programmableFilter-><span>GetPolyDataOutput</span>()-><span>CopyStructure</span>(programmableFilter-><span>GetPolyDataInput</span>());</p>
<p><span> programmableFilter-></span>GetPolyDataOutput<span>()-></span>SetPoints<span>(</span>newPts<span>);</span></p>
<p><span> <font color="#ff0000"> </font></span><font color="#ff0000">//newPts->Delete(); // Lead to BUG </font></p>
<p>}</p><p><br></p><p>vtkSmartPointer<span><</span>vtkProgrammableFilter<span>> filter = </span>vtkSmartPointer<span><</span>vtkProgrammableFilter<span>>::</span><span>New</span><span>();</span></p>
<p></p><div><span>filter-></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>