首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

百分string内存泄露有关问题

2012-04-02 
百分求助:string内存泄露问题。程序模型:主程序(A),模块(B),模块(C)引用关系:A调用B,B调用C,环境:XP+VS2008

百分求助:string内存泄露问题。
程序模型:主程序(A),模块(B),模块(C)
引用关系:A调用B,B调用C,
环境:XP+VS2008

在模块C中定义一个全局变量,例如:string g_text;在函数fun()内定义 g_text="ssssssssssssssssssssss",字符串长度超过16个左右时,VS2008提示内存泄露。
在fun()内定义.string stext ='sssssssssssssssssss',长度超过16个,没有内存泄露。

求解释。。。

[解决办法]
LZ程序中对g_text做了什么操作?查查你调用g_text的代码,如果只是定义一个全局的string大于16个字符而不做任何操作,不可能出现内存泄露
[解决办法]
没代码似乎没问题。
只不过VS08下的string实现中,内部数据是一个union,当长度小于16/sizeof(char or TCHAR)时用静态数组,否则用分配内存到指针。
[解决办法]
这个问题很简单

首先你的g_text估计是一个全局的变量,也就是一个静态变量。

另外你在fun中去设置他。也就是在main函数的调用堆栈内。

因此,当你的程序main在退出时,mfc会检测到内存没释放,其实这个内存依然在g_text中,只是它释放的时间在内存检测报告之后。全局的静态变量的释放是在main函数执行完毕之后。因此你无法检测到它的释放。

热点排行