这个问题分两个小问题来细说。问题的背景是VS2008项目中封装了网络协议接口类,对象成员有一个SOCKET类型成员变量和封装的进行三次握手的成员函数。在调用成员函数时报错发生访问冲突。
1、写入位置 0xCDCDCDCD 时发生访问冲突
跟进问题之后,发现涉及到了未进行处理的SOCKET变量。主要还是优先排查有没有空指针之类的问题。在数据窗口进一步排查,发现了下面的第二个小问题。
2、CXX0030: 错误: 无法计算表达式的值的问题
在主进程的基类中,可以看到涉及TCP部分的成员变量无法获取具体值
这个问题和VS2017不同,高版本IDE对于未处理的变量会赋特殊值。可能长期使用高版本VS会忽略这方面。但是也是一个需要注意的部分。
原版写法
pMainWnd->TcpServer->InitTCPSever();//成员函数中处理
改进写法
...
sockClient = socket(AF_INET, SOCK_STREAM, 0);
addrSrv.sin_family = AF_INET;
...
//直接进行网络通信处理
对于这个问题的处理,目前是解除了一