Symbian内存泄露,求高人给我看看我的代码到你什么地方崩溃了?急!!!

smilepander 2009-11-03 04:03:43
RPointerArray<CUserInfo>* CDBMSManager::GetContactsByType(TInt aType)
{
_LIT(KSelect, "SELECT ");
_LIT(KFrom, " FROM ");
_LIT(KWhere, " WHERE ");
_LIT(KEqual, "=");
_LIT(KDot, ", ");


TBuf<KCustomSqlMaxLength> sqlStr;
sqlStr.Append(KSelect);
sqlStr.Append(_L(" * "));
sqlStr.Append(KFrom);
sqlStr.Append(KContactTable);
sqlStr.Append(KWhere);
sqlStr.Append(KContactTypeCol);
sqlStr.Append(KEqual);
sqlStr.AppendNum(aType);

/*RDbView view;
User::LeaveIfError(
view.Prepare(iBookDb, TDbQuery(sqlStr), view.EReadOnly));
User::LeaveIfError(view.EvaluateAll());*/

RDbTable table;
TInt err = table.Open(iBookDb, KContactTable, table.EReadOnly);
User::LeaveIfError(err);

table.Reset();
CDbColSet* colSet = table.ColSetL();
RPointerArray<CUserInfo>* userList = new (ELeave) RPointerArray<CUserInfo>(5);

CUserInfo* userInfo = NULL;
TPtrC firstName, secondName, mobile;
for(table.FirstL(); table.AtRow(); table.NextL())
{
table.GetL();
firstName.Set(table.ColDes(colSet->ColNo(KContactFirstNameCol)));
secondName.Set(table.ColDes(colSet->ColNo(KContactSecondNameCol)));
mobile.Set(table.ColDes(colSet->ColNo(KContactMobileCol)));

userInfo = new (ELeave) CUserInfo;
userInfo->iFirstName.Copy(firstName.Left(10));
userInfo->iSecondName.Copy(secondName.Left(10));
userInfo->iMobile.Copy(mobile.Left(20));

TDbColNo typeColNo = colSet->ColNo(KContactTypeCol);
RDbColReadStream readStream; // A stream object for long columns
readStream.OpenLC(table, typeColNo);
userInfo->iType = readStream.ReadInt32L();
readStream.Close();
CleanupStack::Pop(); //readStream

userList->AppendL(userInfo);
}
delete colSet;
return userList;
}

程序证明肯定是在这个程序中出现了内存泄露,因为只要不调用这个函数,程序就没有问题,麻烦高人指点!谢谢。
...全文
114 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 alex_hua 的回复:]
内存泄漏不是symbian上最容易定位的问题吗?使用HoolLogger

同时也注意下你返回的数组是否被外面正常释放,好像RDbTable表最后也没Close
[/Quote]

有见地
smilepander 2009-11-04
  • 打赏
  • 举报
回复
果真是细心的人啊,非常感谢您的帮助,就那一点错误,终于解决了!呵呵,再次谢谢!
alex_hua 2009-11-03
  • 打赏
  • 举报
回复
内存泄漏不是symbian上最容易定位的问题吗?使用HoolLogger

同时也注意下你返回的数组是否被外面正常释放,好像RDbTable表最后也没Close

3,120

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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