<DIV>&nbsp;Hi,</DIV>
<DIV>&nbsp;&nbsp;&nbsp; When I use the "itkBinaryMask3DMeshSource" to creat a mesh,compliled &nbsp;without error.But it cannot run.There is a &nbsp;warning likes&nbsp; "0x******** cannot be read"and break at the point in the"itkBinaryMask3DMeshSource.txx "</DIV>
<DIV>&nbsp;&nbsp; So I look over the "itkBinaryMask3DMeshSource.txx ",the code below make me confused.</DIV>
<DIV>&nbsp; //////////////////////</DIV>
<DIV>&nbsp;InputImageIterator it1( m_InputImage, m_InputImage-&gt;GetBufferedRegion() );<BR>&nbsp; InputImageIterator it2( m_InputImage, m_InputImage-&gt;GetBufferedRegion() );<BR>&nbsp; InputImageIterator it3( m_InputImage, m_InputImage-&gt;GetBufferedRegion() );<BR>&nbsp; InputImageIterator it4( m_InputImage, m_InputImage-&gt;GetBufferedRegion() );</DIV>
<DIV>&nbsp; it1.GoToBegin();<BR>&nbsp; it2.GoToBegin();<BR>&nbsp; it3.GoToBegin();<BR>&nbsp; it4.GoToBegin();</DIV>
<DIV>&nbsp; InputImageSizeType inputImageSize = m_InputImage-&gt;GetBufferedRegion().GetSize();<BR>&nbsp; m_ImageWidth&nbsp; = inputImageSize[0];<BR>&nbsp; m_ImageHeight = inputImageSize[1];<BR>&nbsp; m_ImageDepth&nbsp; = inputImageSize[2];<BR>&nbsp; int frame = m_ImageWidth * m_ImageHeight;<BR>&nbsp; int row = m_ImageWidth;</DIV>
<DIV>
<DIV>&nbsp;</DIV></DIV>
<DIV>&nbsp; int i = 0;<BR>&nbsp; int j;</DIV>
<DIV>&nbsp; while ( i &lt; frame )<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; ++it3;<BR>&nbsp;&nbsp;&nbsp; ++it1;<BR>&nbsp;&nbsp;&nbsp; i++;<BR>&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp; i = 0;</DIV>
<DIV>&nbsp; while ( i &lt; row )<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; ++it2;<BR>&nbsp;&nbsp;&nbsp; ++it4;<BR>&nbsp;&nbsp;&nbsp; i++;<BR>&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;</DIV>
<DIV>while ( !it4.IsAtEnd() )<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; vertexindex = 0;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; if ( it1.Value() == m_ObjectValue ) vertexindex += 1;<BR>&nbsp;&nbsp;&nbsp; if ( it2.Value() == m_ObjectValue ) vertexindex += 8;<BR>&nbsp;&nbsp;&nbsp; if ( it3.Value() == m_ObjectValue ) vertexindex += 16;<BR>&nbsp;&nbsp;&nbsp; if ( it4.Value() == m_ObjectValue ) vertexindex += 128;<BR>&nbsp;&nbsp;&nbsp; ++it1;<BR>&nbsp;&nbsp;&nbsp; ++it2;<BR>&nbsp;&nbsp;&nbsp; ++it3;<BR>&nbsp;&nbsp;&nbsp; ++it4;<BR>///////////////////////////////////////////////////</DIV>
<DIV>
<DIV>If m_ImageWidth&nbsp;= m_ImageHeight = 512, m_ImageDepth&nbsp; = 1,so&nbsp;&nbsp; frame = 512*512 =262144,row = 512. Well,after</DIV>
<DIV><EM>while ( i &lt; frame )<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; ++it3;<BR>&nbsp;&nbsp;&nbsp; ++it4;<BR>&nbsp;&nbsp;&nbsp; i++;<BR>&nbsp;&nbsp;&nbsp; }</EM></DIV><EM>
<DIV><BR></DIV></EM>the offset of it4&nbsp;or it3 is <STRONG>262144.</STRONG>then</DIV>
<DIV><EM>while ( i &lt; row )<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; ++it2;<BR>&nbsp;&nbsp;&nbsp; ++it4;<BR>&nbsp;&nbsp;&nbsp; i++;<BR>&nbsp;&nbsp;&nbsp; };</EM><BR>the offset of it4 is <STRONG>262144+512 =262656.</STRONG>but the it4.IsAtEnd() is <STRONG>262144.so the lines </STRONG>while ( !it4.IsAtEnd() )<BR>will run and not stop. and the offsets of the iterators will &nbsp;overflow.<BR>--<BR></DIV>
<DIV>胡宝平</DIV><br><!-- footer --><br><hr/>
<a href="http://www.yeah.net">网易免费邮,全球最大的中文免费邮箱</a>