Symbian内存泄露,求高人给我看看我的代码到你什么地方崩溃了?急!!!
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;
}
程序证明肯定是在这个程序中出现了内存泄露,因为只要不调用这个函数,程序就没有问题,麻烦高人指点!谢谢。