symbian 是针对内存空间和资源均受限的设备设计的,应用程序开发要注意:
1 高效率编程,减少对RAM的不必要的访问使用
2 资源使用完后 尽快释放
3 需要对资源不足情况进行处理,这需要在每次内存分配的时候都进行
4 如果程序运行过程中出现内存不足,使程序到以稳定态,然后进行相关处理
栈与堆
栈 默认8KB
Leave
清理栈
需要释放的局部变量 没有释放而函数发生Leave,清理栈这时会对所有变量自动删除。
清理栈操作 入栈和出栈
需要入栈的情况 ,某个对象只有某个局部域的指针引用,而且在该对象的生命期内用的函数可能发生Leave。
对于指针和句柄 入栈命令不一样。
对于指针
CleanupStack::PushL(ptr); 如果发生Leave,ptr指向的内存空间就会被删除。
对于句柄
CleanupClosePushL(handle); 如果发生Leave,句柄自动关闭。
出栈
CleanupStack::Pop(pointer);或
CleanupStack::PopandDestroy(pointer);均可以将指针从清理栈移除。
二阶段构造
将不会发生异常的代码放在普通的构造函数中,把可能发生异常(动态内存资源分配)的部分放在二阶段构造函数中。
目的:为了解决构造函数的资源分配问题
内存泄露处理
内存泄露主要原因是堆上的资源是否正常释放。