2 jujiawu1024 jujiawu1024 于 2016.02.25 18:45 提问

MFC中cstring放入结构体的释放

用delete释放结构体的话,cstring会被释放么?如果不会,能用free去释放cstring么?

3个回答

caozhy
caozhy   Ds   Rxr 2016.03.20 21:47
已采纳

如果你的cstring是指针,那么还是需要手工delete的,否则不可能自动释放。

oyljerry
oyljerry   Ds   Rxr 2016.02.25 22:04

如果是cstring对象 那么delete的时候cstring会自动释放

enpterexpress
enpterexpress   Rxr 2016.02.25 20:22

CString内部有管理内存的机制.不管传什么怎么用都不用外面再另外手动释放.
除非你用的是

 CString* str = new CString;

那就必须delete str;

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
结构体中用CString的请注意了
定义结构体CEventMsg{   CString str;  int n;} a;如果memset(a,0,sizeof(CEventMsg));则会引起程序崩溃,如果想用memset,CString 换为string即可.关于崩溃原因愚人认为CString的内存分配机制与STL中的string不同.由于时间原因,来不及分析两者的不同点,请其他高手作答了...
C++/MFC结构体中到底能不能使用CString?
C/C++ code ? 1 2 3 4 5 6 7 struct u     {           CString  sNumber;         CString sPass;         int PRIOR;     }; 我
结构体中用到了CString类型
结构体中用到了CString类型,那么对这个结构体的操作就会受到一些限制: 1. 不能使用sizeof()之类的函数 2. 不能使用new来分配结构体内存 3. 不能把结构体的实例进行拷贝 再补充一下,不能用ZeroMemory()来清空操作
VC++:用new申请cstring数组,delete时出问题!!!
void func() {    CString *names=new CString[2];    CString *names_dim[5]; // 真正数组的情形    for(int i; isizeof(names_dim)/sizeof(CString *); i++) {        names_dim[i] = new CString;    
关于使用CString 出现的问题
1、CString是一个很好用的结构体。我也是因为偶然的原因,用到了。当然遇见了很多的问题,还有一些精髓需要领悟。一些比较好的blog: 讲解CString的一些机制 http://blog.csdn.net/shupan001/article/details/6437783 CString一个好处是,比如我想连接两个字符串,char* 类型的话必须自己编程实现或者用函数strcat。但
为结构体中的CString成员赋值出错的问题
<br />问题如下:<br />我定义了如下的一个结构体:<br /><br />typedef struct<br />{<br />  CString csText;<br />}MyStruct;<br /><br />并有如下的程序段1:<br />MyStruct * p=NULL;<br />p=(MyStruct *)malloc(sizeof(MyStruct));<br />if(!p)<br />   AfxMessageBox("分配内存失败!");<br />else<br />{
CString需要注意的地方 (部分转)
最近出现了如下的情况 一时半会找不到原因,在网上找到如下的文章,使我对CString有了新的认识
MFC学习(27)CString内存泄漏的雷区——GetBuffer与ReleaseBuffer
GetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能。 CString ::GetBuffer有两个重载版本: LPTSTR GetBuffer( );LPTSTR GetBuffer(int nMinBufferLength); 在第二个版本中,当设定的长度小于原字符串长度
CString内存泄露的解决办法
 引文:在多数情况下,比较简单的使用过程中,MFC的这个BUG不会发作,也就是不会有内存泄露。那什么时候CString会暴露出BUG那?我以前出现错误的经验是:如果多次调用带有CString引用的参数的函数(形如:funstr(CString &str);这样的函数),在一定的时候(和字符串长度有关系),CString的内部引用记数器发生记数混乱,造成内存泄露。    应为vc6.0在CStr
CString用不好,真的是有内存泄露的
前几天帮别人调试一个程序,说是有内存泄露: 1.new了之后没有delete char *pBuf=new char[1025]; delete[] pBuf; 2.CString,简单操作,可能不会出现问题,如果字符串长度比较大,而且牵涉到较多的复制截取操作,记得用Empty函数。 PS:如果多次调用带有CString引用的参数的函数(形如:funstr(CString &st