关于全局变量的问题,请大家帮忙看看
我现在定义了一个全局变量[实为一个类的实例],但使用中发现,这个变量在窗体全部释放前就执行析构函数了,结果总是在程序退出的时候,报错非法访问变量,特别是有多线程的时候,请大家帮忙多多指点:)谢谢先! 问题点数:100、回复次数:12Top
1 楼sprewellkobe(我为软件狂!)回复于 2005-03-03 00:21:13 得分 10
你最好把代码给出,我理解是你编的有问题,可能是对象都没了,你还在析构里使.
多线程尽量不用全巨变量,如果用全局变量销毁由主线程完成.Top
2 楼cczlp(不惑)回复于 2005-03-03 08:13:46 得分 10
upTop
3 楼fyhui(一只小猫)回复于 2005-03-03 09:34:47 得分 10
我觉得不可能把,看看代码再说Top
4 楼hailin10(虎子)回复于 2005-03-03 09:58:21 得分 10
不会吧Top
5 楼Maconel(Maconel)回复于 2005-03-03 10:07:03 得分 10
你的窗体实际上也是个全局变量,先释放你的变量,再释放窗体,也是很正常的嘛。
我也遇到过这个问题,解决方法就是在使用这个变量前,先判断一下:
class a;
if (a)
{
...
}Top
6 楼zdhsoft(冬瓜猫)回复于 2005-03-03 11:43:27 得分 0
多线程的问题倒是早就解决了!Top
7 楼fangrk(加把油,伙计!)回复于 2005-03-04 15:35:35 得分 10
可以这样试试看,在.h文件中的private区域中增加:MyType* ptr;
在cpp文件的onFormCreate或者Form::Form中增加ptr=new MyType;
在cpp文件的onFormDestroy中delete ptr;Top
8 楼sephil(NAILY Soft 【哈里波特大】)回复于 2005-03-04 15:39:10 得分 10
释放变量放在#progma exit里Top
9 楼magicsnake(北极狐)回复于 2005-03-04 16:54:20 得分 10
是不是在子线程内释放了然后在主线程结束的时候调用Top
10 楼zdhsoft(冬瓜猫)回复于 2005-03-07 11:35:16 得分 0
不是,我不是在用多线程的时候出的问题.
我定义了一个.cpp,用来放全局变量的!但这里定义的全局变量在所有的form之前就释放了Top
11 楼StockViews(股视)回复于 2005-03-11 04:55:55 得分 10
这正常。
全局变量的构造和析构的时机真的不好把握,最好不要使用全局变量。
如果一定要用,那也不能使用太多,我一般喜欢定义一个类并把原准备做为全局变量的东东都移到那个类中当普通的数据成员变量,然后把这个类在主窗体中构造(new)和析构(delete)……Top
12 楼cczlp(不惑)回复于 2005-03-11 07:53:09 得分 10
先判断是否释放了然后再使用类。Top




