欢迎大家跟我交流
gTalk: 2005119@gmail.com
我的统计
您是第 位访客
ACE运行时的初始化和结束时的回收操作
url: http://www.cppblog.com/ace
如果我从dll中调用 test()函数,函数返回2...
========================解答:平台不同及兼容性问题的一个特殊地方是运行时对象的初始化和程序退出时与那相类象相关的析构操作。这种不同尤其表现在包含有多线程的时候,这是因为编译器没有附加的能力来顺序访问那些有先后之分的运行时对象(静态数据)的自动初始化和析构的方法。因此ACE说的一句话"静态是邪恶的",幸运的是,ACE提供了一种可移植的解决方案来解决对象初始化和析构的问题。
如果你的程序不是从标准的main()开始的,你需要在初始化和结束时用到对象管理器。你需要调用下面两个函数:
ace::init() 在其它ACE操作之行前初始化对象管理器。
ace::fini() 在你的ACE操作完成后,结束对象管理器。这个调用将触发注册在对象管理器中所有对象的clearup操作。
这对于Windows程序来说可能很要紧,因为Windows程序使有WinMain()好过于标准的main()函数,在库中使用ACE但用户找不到主程序入口。对于库来说,为库分别提供初始化结束化函数来分别调用ACE::init()和ACE::fini()是非常有用的。
Powered by: C++博客 Copyright © Stone Jiang