CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VC.NET

CString释放问题

楼主StarsWu(☆<--->☆)2004-08-01 15:12:20 在 .NET技术 / VC.NET 提问

VC函数中定义了CString对象,但函数结束时不能释放.调试时进入~CString()时出的错. 问题点数:100、回复次数:20Top

1 楼StarsWu(☆<--->☆)回复于 2004-08-01 15:46:03 得分 0

upTop

2 楼effenberg(爱浪漫的人)回复于 2004-08-01 17:39:31 得分 0

CString对象的对象你释放什么?不用多此一举Top

3 楼StarsWu(☆<--->☆)回复于 2004-08-01 18:00:05 得分 0

我没专门释放它呀,是函数结束自动释放的.Top

4 楼wangsaokui(无间道III(终极无间)C#MVP)回复于 2004-08-01 18:00:18 得分 0

托管代码可以自动垃圾收集,如果你要手动销毁对象,贴出~CString()Top

5 楼bluejugar(2046,那年我64.)回复于 2004-08-01 20:14:46 得分 0

可以考虑用smart   pointer.Top

6 楼cnhgj(戏子) (没时间练太极)回复于 2004-08-02 02:25:41 得分 0

赋空值即可啊Top

7 楼cnhgj(戏子) (没时间练太极)回复于 2004-08-02 02:26:50 得分 0

或  
  CString   str;  
  ............  
  str.Empty();Top

8 楼gordenfl(笨笨(杨过寻找姑姑,两行泪....))回复于 2004-08-02 07:08:55 得分 0

是不是已经释放了空间,然后对空指针释放空间呢??  
  能不能看看你的代码?这样好对症下药  
  Top

9 楼bullHEcow(牛)回复于 2004-08-02 08:33:02 得分 0

upTop

10 楼StarsWu(☆<--->☆)回复于 2004-08-02 09:59:12 得分 0

Sorry,我没说清楚。  
  问题是这样的:  
  我建了个动态连接库dll文件,其中有个函数假设为GetStr(),  
  返回一个CString对象。而我在执行文件exe文件中有个函数假设为f(),  
  其中定义了一个CString对象,将其赋值为GetStr();  
  在函数f()结束时出错。  
   
  注:将函数f()中CString对象改为指针,然后用new,然后赋值,不会出错。  
  不用dll,直接用函数,也不会出错。Top

11 楼qingshan(青山)回复于 2004-08-02 10:48:43 得分 10

不用CString   ,用char[]看看Top

12 楼hdt(倦怠)回复于 2004-08-02 21:37:17 得分 0

CString   or   CString*    
  if   CString   no   to   delete  
  else  
  CString*   delete   youobject  
  Top

13 楼alec626(月吻长河Blog:spaces.msn.com/filebase)回复于 2004-08-04 13:02:23 得分 0

不会吧  
  RebuildAll试一下Top

14 楼108041217(josso)回复于 2004-08-04 15:42:14 得分 0

給出GetStr()在dll中的聲明Top

15 楼sundy26(一缕阳光)回复于 2004-08-05 17:57:00 得分 20

在DLL中不要用CString   最好用char   *或者LPSTRTop

16 楼mage1982(牛)回复于 2004-08-05 20:52:56 得分 20

那是自动释放的  
   
  也是vc.net垃圾回收功能之一Top

17 楼yys79(shart-shoot)回复于 2004-08-06 13:20:26 得分 20

说的好,应该用const   char*,不要用这种对象。或者使用STL的string类操作更方便Top

18 楼StarsWu(☆<--->☆)回复于 2004-08-06 14:16:48 得分 0

问题是要用CString怎么办,  
  总不可能你手痛就不用手吧。Top

19 楼wxaxiao(随风飘散)回复于 2004-08-06 15:22:54 得分 0

方法是多种的,为什么   非要舍近求远呢Top

20 楼ctan(ctan)回复于 2004-08-06 19:30:05 得分 30

这是因为你的CString变量超出了作用域,  
   
  DLL的变量有专门的存储区,   要想不出现这种问题,   必须用new分配空间,   使用指针传递  
  Top

相关问题

  • 关于CString的内存释放问题。
  • CString的对象该怎么释放啊?
  • CString,BSTR,_bstr_t,_variant_t 哪些用完后需要释放啊,怎么释放
  • 释放对象(CString型)的内存空间?
  • 郁闷,CString不能释放缓冲内存。
  • 释放内存
  • 内存释放
  • 释放指针
  • 内存释放
  • 释放内存?

关键词

  • 函数
  • 指针
  • 文件
  • dll
  • cstring
  • 释放
  • 对象
  • 出错
  • 问题
  • 空间

得分解答快速导航

  • 帖主:StarsWu
  • qingshan
  • sundy26
  • mage1982
  • yys79
  • ctan

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo