调用OWC控件LoadText方法后如何释放内存

lsl7909 2009-04-19 12:43:21
代码如下:
try
{
//创建WorksheetPtr对象
WorksheetPtr pWorksheet = ((WorksheetPtr)(get_ActiveSheet()));
ASSERT(NULL != pWorksheet);

RangePtr pRange = pWorksheet->GetCells();
pRange->ClearContents();
//装载
pRange->LoadText(strFilePath, ",", VARIANT_FALSE, _bstr_t(L""));
}
catch (_com_error &e)
{
_bstr_t bstrDsc = e.Description();
const TCHAR* pchErrMsg = e.ErrorMessage();
CString strErrInfo;
strErrInfo.Format(_T("从txt文本中装载数据时出错,原因:%s, %s"),(LPCTSTR)bstrDsc,pchErrMsg);
AfxMessageBox(strErrInfo);
}
如上所示,LoadText为导入某txt文件的方法,并在owc控件中显示。
这里出现问题:调用LoadText(...)后,内存增加了10M(txt文件有20M),但owc控件退出时,却没释放这10M内存空间,请问各位大虾,这是什么原因?编译环境为VC,指针都采用的智能指针。
...全文
191 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsl7909 2009-04-26
  • 打赏
  • 举报
回复
谢谢上面的回复,我最后发现是使用的OWC dll的问题,我之前使用的是比较老的MSOWC.dll,只有3M左右,估计是Office2000的;现在我改为owc10.dll或ocw11.dll都没有问题,这两个dll在office2003中有。
oyljerry 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lsl7909 的回复:]
引用 1 楼 wuyq11 的回复:
通过GC释放资源

GC是C#中的吧,我这里使用的是VC,不能使用GC。

引用 2 楼 oyljerry 的回复:
你要看pRange 是否有对应的释放资源的成员函数等,如Release()等这种函数..

pRange是智能指针,会自动释放的,即使调用了Release也没用,我怀疑这是OWC控件的Bug。
[/Quote]
我是要你检查OWC控件自身是否提供了释放对应资源的接口.
oyljerry 2009-04-19
  • 打赏
  • 举报
回复
你要看pRange 是否有对应的释放资源的成员函数等,如Release()等这种函数..
wuyq11 2009-04-19
  • 打赏
  • 举报
回复
通过GC释放资源
lsl7909 2009-04-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
通过GC释放资源
[/Quote]
GC是C#中的吧,我这里使用的是VC,不能使用GC。

[Quote=引用 2 楼 oyljerry 的回复:]
你要看pRange 是否有对应的释放资源的成员函数等,如Release()等这种函数..
[/Quote]
pRange是智能指针,会自动释放的,即使调用了Release也没用,我怀疑这是OWC控件的Bug。

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧