社区
ATL
帖子详情
static型的COM变量,程序退出时异常
mikeche6361
2012-08-22 09:08:24
请问:
1 程序中所有创建的COM组件变量(CoCreateInstance创建)都必须在CoUninitialize之前进行?
2 程序中static型变量分配的内存,则在Winmain返回后由编译器释放的?
3 如果以上两条成立的话,那么就不能避免的在CoUninitialize之后,释放COM变量会发生异常,该问题应该如何解决?
请高手帮忙回答一下,谢谢
...全文
146
7
打赏
收藏
static型的COM变量,程序退出时异常
请问: 1 程序中所有创建的COM组件变量(CoCreateInstance创建)都必须在CoUninitialize之前进行? 2 程序中static型变量分配的内存,则在Winmain返回后由编译器释放的? 3 如果以上两条成立的话,那么就不能避免的在CoUninitialize之后,释放COM变量会发生异常,该问题应该如何解决? 请高手帮忙回答一下,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mikeche6361
2012-08-22
打赏
举报
回复
5楼方法果然可以,万分感谢
mikeche6361
2012-08-22
打赏
举报
回复
5楼的办法可能可行,我去试试 谢谢
Occam's_Razor
2012-08-22
打赏
举报
回复
可以这样试试
定义一个辅助类
class CComEnvironment
{
public:
CComEnvironment()
{
CoInitialize(NULL);
}
~CComEnvironment()
{
CoUninitialize();
}
};
在你的静态变量定义前
先定义
static CComEnvironment COM_ENV;
ndy_w
2012-08-22
打赏
举报
回复
智能指针害人!如果对象的生命周期就是程序的生命周期,那你可以在CoUninitialize前面一行自己调用spXXX->Release();
sg_knight
2012-08-22
打赏
举报
回复
调用CoUninitialize之前,手工Release指针。
mikeche6361
2012-08-22
打赏
举报
回复
请问有没有方法,可以让static的com变量,在程序退出时不发生异常?我的程序是:该static变量使用的是智能指针,程序退出时,在Winmain后编译器才会自动调用该智能指针的Release,因此会发生异常,也就是说把CoUninitialize放在Winmain最后一行也没用,请问该如何解决这个static释放时机的问题?
ndy_w
2012-08-22
打赏
举报
回复
CoUninitialize退出套间,会把dll都卸载了。留下的接口指针不再有效,你再release就会出问题。
但是你说的static只是接口指针占用的内存,释放这个内存和com无关。要释放com对象,你要自己调用release。
确认对象的生存周期,在合适的时候调用release,并把接口指针清0。
c语言 静态
变量
可以是指针吗,深入理解C语言
static
、extern与指针函数
1.exit(0)正常
退出
程序
exit(1)
程序
异常
时
退出
程序
2.
static
(静态
变量
)修饰局部
变量
在局部
变量
使用
static
修饰,会延长局部
变量
的存在期。但我们需要注意一下几点:•虽然
static
修饰
变量
的生存期很长,但它始终是局部...
【C++】全局
变量
释放导致进程崩溃的解决方法
方法的线程)在
退出
时
,全局
变量
(包括
static
和non-
static
的全局
变量
)会被释放,此
时
如果子线程仍在访问该全局
变量
,则有可能访问的是已经被释放的全局
变量
,从而有可能导致进程崩溃。可以看到
程序
出现了...
OC中的
static
静态
变量
/extern全局
变量
/内存分区说明
1.在全局
变量
前加
static
,全局
变量
就被定义成为一个全局静态
变量
(全局
变量
和静态全局
变量
的生命周期是一样的,都是在堆中的静态区,在整个工程执行期间内一直存在) 特点如下: 1)存储区:静态存储区没变(静态...
static
变量
与全局、局部
变量
的区别
static
变量
与全局、局部
变量
的区别全局
变量
(外部
变量
)的说明之前再冠以
static
就构成了静态的全局
变量
。全局
变量
本身就是静态存储方式,静态全局
变量
当然也是静态存储方式。这两者在存储方式上并无不同。这两者的...
【Android】
static
静态
变量
的生命周期——静态之坑
Android 中
static
静态
变量
幽灵
ATL
3,245
社区成员
48,537
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章