讨论,关于多次调用ISHELL_CreateInstance()可能引起的问题。
如下面的函数,如果在一个函数里调用ISHELL_CreateInstance()函数来进行对象的实例化与空间的分配,释放的话,在
FreeAppData()里面完成,我们知道,这个释放工作是关闭应用时BREW自己完成的。那么在应用运行期间,我多次调用SHOW_InputText(pApp),调用一次就执行了一次ISHELL_CreateInstance(),在执行第二次及以后的时候,它还会不会向内存申请空间呢?如果申请的话,新的内存与第一次申请的时候是一样的吗,或者说覆盖第一次申请的空间,如果不覆盖的话,那么多次调用会不会导致内存不足呢?
我尝试着给ISHELL_CreateInstance()加个判断,如果pApp->m_ptextobj为空的话,就执行该函数,否则不执行,这样的话,第二次调用时就没有调用ISHELL_CreateInstance(),也没有生成ITEXTCTL控件。
什么原因呢?大家指点指点。
boolean SHOW_InputText(popname* pApp)
{
ITextCtl* pITextCtl=NULL;
if(ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_TEXTCTL,
(void**)(&pApp->m_ptextobj))!=SUCCESS)
{
return FALSE;
}
pITextCtl=(ITextCtl*)pApp->m_ptextobj;
....
return TRUE;
}