操作系统  办公  实用知识  设计  开发  WEB开发  移动开发  数据库  软件工程  网管  安全  管理  信息化  答疑  渠道 

递归

2006-10-9 网友评论 0 条 点击进入论坛

static void CMyApp_HowFileEnumerationCrashesMyApp(
CMyApp *pme, char * pszDir)
{
IFileMgr * pfm;
FileInfo fi;

if(ISHELL_CreateInstance(pme->a.m_pIShell,
AEECLSID_FILEMGR, (void **)(&pfm)))
return;

if(!IFILEMGR_EnumInit(pfm, TRUE)){
while(IFILEMGR_EnumNext(pfm, &fi))
CMyApp_HowFileEnumerationCrashesMyApp(pme,
fi.szName);
}

IFILEMGR_Release(pfm);
}

此代码有什么问题?

上面的代码序列在台式机系统上十分常见。 但是,考虑到 FileInfo 结构的大小,它在 BREW™ 手持设备上使用十分危险。

更加稳定的解决方案在堆上使用临时分配,如下所示:
static void CMyApp_HowFileEnumerationCrashesMyApp(CMyApp *pme,
char * pszDir)
{
IFileMgr * pfm;
FileInfo * pfi;

if(ISHELL_CreateInstance(pme->a.m_pIShell,
AEECLSID_FILEMGR,(void **)(&pfm)))
return;

if((pfi = (FileInfo *)MALLOC(sizeof(FileInfo))) != NULL){
if(!IFILEMGR_EnumInit(pfm, TRUE)){
while(IFILEMGR_EnumNext(pfm, &fi))
CMyApp_HowFileEnumerationCrashesMyApp(pme,

fi.szName);
}
FREE(pfi);
}

IFILEMGR_Release(pfm);
}

已有 0 位对此文章感兴趣的网友发布了看法    
我来评两句 登录邮箱: 密码:
  匿名发表
今日推荐
技术文库(共有 46468 篇文章)
操作系统
办公软件
实用知识
网络管理
软件开发
WEB开发
软件工程
数据库
设计在线
信息安全
行业信息化
管理信息化
重点推荐
电子杂志订阅
点击电子杂志名称查看样刊
输入E-mail地址即可订阅
E-mail