最近在VS2008上写了一个UDP的小例子,在服务器端创建了一个线程用来接收和发送数据。线程函数代码为:
DWORD WINAPI ServerThread(LPVOID lParam)
{
DWORD acq;
//此处省略
return acq;
}
acq作为返回值。在声明的时候没有初始化,编译通过。但是在运行时,要返回acq时,便会报异常了,异常内容为:
提示acq没有初始化。将acq初始化后,不会再报异常,所有功能可以正常使用。虽然问题解决了,但是我却没有完全弄懂原因。
好的编码习惯应该是在声明的时候就初始化,但是为什么没有初始化的变量使用时会报这个异常呢?到底是什么原因导致的这个问题呢?在C++标准中,应该没有对这方面的限定吧,是平台的原因吗?如果是,那到底是什么导致了这个问题的出现呢?查阅了很多资料也没弄懂,所以记下来,希望能够得到前辈指点。
这个异常是由于变量未初始化导致的,解决办法也有,但是我觉得自己找到问题的根源,我认为是其他方面的原因,比如编译器或平台对此做了某些方面的限定,具体原因我不知道,希望能够得到指点。