我正在处理一些静态分析缺陷,导致我出现问题的是这一个。
SOCKADDR_IN m_stLclAddr;
SOCKADDR_IN is a member of the WinSock API
缺陷是说我没有初始化以下内容:
我对熟悉WinSock API并不是很熟悉,但我做了一些研究,我只是想知道以下代码行是否会使用默认值初始化m_stLclAddr?:
m_stLclAddr = { 0 };
答案 0 :(得分:6)
m_stLclAddr = {0}
会在第一次将所有内容设置为零(不一定是默认值或您实际想要做的事情)。 memset(&m_stLclAddr, 0, sizeof(SOCKADDR_IN));
将m_stLclAddr中的所有内容设置为零,不仅用于初始化,还用于连续调用。
我认为你会想做这样的事情:
local_sin.sin_family = AF_INET;
local_sin.sin_port = htons (PORTNUM);
local_sin.sin_addr.s_addr = htonl (INADDR_ANY);
答案 1 :(得分:1)
是的,使用{0}
会将m_stLclAddr
初始化为全零