因为不初始化带来的坑爹bug

今天测试自己的程序的时候突然发现有一个地方总是会多出一个串, 然后我打开日志开关来测, 发现这个串奇迹般的没有了。。。。

我写了3个接口, 其他两个接口是在子线程里面处理的,  这个出错的接口是在主线程里面处理的。 逻辑完全一样。。。。为毛偏偏主线程里面出错

POST http://10.1.3.219:18003.POST/client/getToken.do HTTP/1.1
Host: 10.1.3.219:18003.POST


多了这个POST, 让我百思不得其姐啊, 于是我来调试一下,看哪里出问题了, 你妹,调试到最后居然这个串又奇迹般的没有了。。。。


先冷静下来, 看看声明:

private:
SOCKET m_sckMain;                     //socket主句柄
sockaddr_in m_addr;                   //地址族对象
char m_lpHostName[nMAX_URL_LEN];      //HTTP请求主机名
char m_lpHostPort[6];  //主机端口
char m_lpMethod[5];                   //请求方法

char m_lpUrl[nMAX_URL_LEN];           //请求URL
char m_lpHeaders[nMAX_PACKET_LEN];    //附加的请求头
char m_lpCookies[nMAX_PACKET_LEN];    //服务器返回的Cookies

char m_szProxyName[128];//ie代理主机ip
char m_szProxyPort[8];//ie代理主机端口

红色部分给了我灵感, 这个POST不就是方法名吗? 哦, 这个端口一定是在取得时候找不到\0所以一直取到Method的结尾了

看看构造函数的初始化部分:

memset(m_lpHostName, 0, nMAX_URL_LEN);

memset(m_lpMethod, 0, 5);
memset(m_lpUrl, 0, nMAX_URL_LEN);
memset(m_lpHeaders, 0, nMAX_PACKET_LEN);


memset(m_szProxyName, 0, sizeof(m_szProxyName));
memset(m_szProxyPort, 0, sizeof(m_szProxyPort));


原来我根本就没有对这个PORT进行置空处理, 当我加上memset(m_lpHostPort, 0, sizeof(m_lpHostPort));就好了。


问题算是解决了。。。



但是让我疑惑的是:为毛仅仅是在这个接口里面出错呢?仅仅是因为在主线程中处理?  

我靠,看来我得再看看线程内存分配的问题, 主线程与子线程的区别



----综上所述, 初始化虽是小事, 但不干的话就会带来大事了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值