VC++中,全局变量问题?如何,在几个Cpp文件中,使用一个指向对象的指针?

Atl_lover 2002-03-29 03:48:09
我在一个cpp文件中申明了一个对象指针,对它分配内存(实例化)之后,创建一个线程,而这个线程,在另一个cpp文件中,它是用extern申明的,但是那个指针,还是为空?如何使那个不在同一个cpp文件中的线程过程,全局指针得到正确的值?
...全文
106 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
maoxianwang 2002-03-29
  • 打赏
  • 举报
回复
我晕

你自己解决了?

那分给谁?
neccui 2002-03-29
  • 打赏
  • 举报
回复
是什么原因?
Atl_lover 2002-03-29
  • 打赏
  • 举报
回复
我自己解决了。
Atl_lover 2002-03-29
  • 打赏
  • 举报
回复
scklotz(晓春) ;线程传参数我也会,但是很多参数传递很不爽。

neccui(PPC):
a.cpp
CMpeg1Stream *g_pMpeg1Stream; //定义
.
.
.
g_pMpeg1Stream = new CMpeg1Stream(dwSize);
.
.
.
hSendMpeg1Thread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) lpParameter1, 0, NULL);
//创建线程


b.ccp
extern CMpeg1Stream *g_pMpeg1Stream; //申明
/
//从文件中取出数据--然后发出

DWORD SendMpeg1ThreadProc(LPVOID p)
{
.
.
.
g_pMpeg1Stream->SetFileHead(pFileHead);
.
.
.
}
garfield_82 2002-03-29
  • 打赏
  • 举报
回复
#include <那个有线程的文件名>
试试
scklotz 2002-03-29
  • 打赏
  • 举报
回复
你这是通过全局变量的形式,在多个线程中进行通讯。本身这种机制是没有问题的。你提到的问题我认为是你的变量定义或者使用有问题。

其实你可以通过另外一种方式:
通过给线程传递参数,来实现通讯,这样的可靠性要好的多。
比如:

void ThreadFunction( void* para )
{
YouClass* pObj = (YouClass*)para;
pObj-> ...
...
}

// instance
YouClass* pObj = new YouClass;

// start thread
StartThread( (ThreadFunctionType)ThreadFunction, (void*)pObj );

...
neccui 2002-03-29
  • 打赏
  • 举报
回复
你是如何声明和定义这个变量的?
Atl_lover 2002-03-29
  • 打赏
  • 举报
回复
ququshb(忘求了):先分配让后,再创建现成的阿。如果,这个线程过程,放在同一个Cpp文件下,就没有问题,但是。。。
ququshb 2002-03-29
  • 打赏
  • 举报
回复
保证先分配内存
neccui 2002-03-29
  • 打赏
  • 举报
回复
再检查一下程序吧,如果是NULL,那么肯定是还没有分配内存。

线程不会对这个问题有影响的。
neccui 2002-03-29
  • 打赏
  • 举报
回复
如果为空的话,肯定是你还没有初始化。

再检查一下程序。线程不影响这些东西的。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧