WEB开发网
开发学院手机开发Symbian 开发 Symbian 程序内存管理的特点 阅读

Symbian 程序内存管理的特点

 2010-03-01 16:22:00 来源:WEB开发网   
核心提示:}每创建一个对象,必须立刻加入到清除栈中,Symbian 程序内存管理的特点(2),一旦出现异常TRAD 会调用PopAndDestroy()清空清除栈,并释放相对于的空间,第二阶段才真正申请内存或者可能发生Leave的函数,第二阶段构造的申请的内存的变量在析构函数中删除,如果没有Levae,则把对象从清除栈中弹出

}

每创建一个对象,必须立刻加入到清除栈中,一旦出现异常TRAD 会调用PopAndDestroy()清空清除栈,并释放相对于的空间。

如果没有Levae,则把对象从清除栈中弹出,指针就不会被销毁。

清除栈的声明,控制台程序在E32main()声明,GUI程序有CONE创建,所以不用自己声明。

5、Two phase construction (两阶段构造)

class CClass : public CBase

{

privae:

static private NewL();

CClass();

~CClass();

void Construct();

private:

TInt ivalue;

CObkject *obj;

}

CClass::NewL()

{

//第一阶段

CClass * self = new(ELeave)CClass();

CleanupStack::PushL(self);

//第二阶段

self->ConstructL(); //如果构造失败,则leave

CleanupStack::Pop(self);

return self;

}

CClass::CClass

{

//不做任何操作

}

CClass::ConstructL()

{

CObject *obj= new(ELeave) CObejct;

}

CClass::~Class

{

delete obj;

}

1、C类才用两阶段构造

2、需要两阶段构造类一般调用NewL()构造,调用私有的方法完成真正构造的过程。

3、第一阶段不能有任何分配申请堆内存的行为,也不能调用导致发生Leave的函数,只是对自身进行构造。第二阶段才真正申请内存或者可能发生Leave的函数。第二阶段构造的申请的内存的变量在析构函数中删除,而不能放在清除栈中。

上一页  1 2 

Tags:Symbian 程序 内存

编辑录入:coldstar [复制链接] [打 印]
赞助商链接