jxncxu 发表于 2007-2-26 01:19:00

[求助]VS.NET2005+CAD2007中,如何为一个字串重新分配内存

本帖最后由 作者 于 2007-2-26 17:54:22 编辑 <br /><br /> <font face="宋体" size="2">我在程序中定义了一个字串重新分配内存的函数,编译链接均正常。但在CAD调用时却出现严重错误,造成系统崩溃(提示参数类型错误)。这是为何?<br/><br/>struct resbuf *join::strrealloc(struct resbuf *strbuf,TCHAR *word)<br/>{<br/>struct resbuf *ex;<br/>ex=entitem(strbuf,1);<br/>if(_tcslen(ex-&gt;resval.rstring)&lt;(_tcslen(word))) //重新分配内存<br/>ex-&gt;resval.rstring=(TCHAR *)realloc(ex-&gt;resval.rstring,_tcslen(word)+1);<br/>_tcscpy(ex-&gt;resval.rstring,word);<br/>return strbuf;</font><br/>}

jxncxu 发表于 2007-4-4 00:21:00

<p>呵!终于解决问题了。</p><p><font size="2">struct resbuf *join::strrealloc(struct resbuf *strbuf,TCHAR *word)<br/>{<br/>struct resbuf *ex;<br/>ex=entitem(strbuf,1);<br/>if(_tcslen(ex-&gt;resval.rstring)&lt;(_tcslen(word))) //重新分配内存<br/><font color="#f70909">ex-&gt;resval.rstring=(TCHAR *)realloc(ex-&gt;resval.rstring,_tcslen(word)+1);</font><br/>_tcscpy(ex-&gt;resval.rstring,word);<br/>return strbuf;<br/></font>}</p><p>将上面红色字语句改为:</p><p><font color="#000000" size="2">ex-&gt;resval.rstring=new TCHAR;</font></p><p><font color="#f70909" size="2"><font color="#000000">还应在最后一行加上:delete ex-&gt;resval.rstring</font><font color="#000000">;</font></font></p><p><font size="2">一切ok</font><br/></p>
页: [1]
查看完整版本: [求助]VS.NET2005+CAD2007中,如何为一个字串重新分配内存