【发布时间】:2011-04-04 09:47:18
【问题描述】:
我的代码如下:
class TimeManager
{
public:
virtual ~TimeManager();
};
class UserManager : virtual public TimeManager
{
public:
virtual ~UserManager();
};
class Server : virutal public UserManager
{
virtual ~Server();
};
CServer *pServer;
DWORD WINAPI ServerHelper(void*);
int main()
{
//Create server
CreateThread(NULL, 0, ServerHelper, NULL, 0, NULL);
std::cin.get();
//delete server
delete pServer;
std::cin.get();
return 0;
}
DWORD WINAPI ServerHelper(void *v)
{
pServer = new CServer;
return 0;
}
我的问题是 - 猜想 - 我的服务器析构函数不会被调用......
我无法想象,为什么:/...(我在所有三个类中都编写了输出函数,而服务器构造函数不输出任何内容,但其他两个都...在 SECOND 之后! key-hit...(为什么是第二个而不是删除后?)
任何提示、提示、解决方案?....
我正在使用 Visual Studio 2010
【问题讨论】:
-
pServer 变量是 Server 还是 CServer?
-
修正您的拼写错误,然后也许有人可以回答您的问题。就目前而言,谁知道 wtf 正在进行,因为您发布的代码不可编译,因此显然不是您的问题的示例。
-
我刚刚编译(修正错别字后)并运行了这个 VS2010 速成版。并且输出符合预期,即
~CServer~UserManager~Testmanager -
尝试正确同步线程。等待创建的线程执行完ServerHelper,然后删除Server。
-
hmm... 服务器创建了 2 个不输出任何内容的工作线程,它们只是计算...服务器使用 WaitForMultipleObjects() 等待...
标签: c++ visual-studio-2010 destructor delete-operator