今天在调试socket的时候遇到了这样一个比较奇怪的问题。
我在单步调试多线程程序的时候是没有错误的,但是一运行程序马上崩溃了。
原来以为是多线程的问题,但是我在程序崩溃之后调试了一下,找到出错的地方,发现是在使用数组的时候出错了。
这个数组是动态分配内存malloc出来的,百度了一下,看到有人跟我遇到了相同的问题:
时间问题.你单步,.每一步花的时间多,所以程序执行完成了,没有错误,
而你直接执行,执行时间太快,可能你要的结果还没出来,就执行了,比如读数据,其实你还没读全,就开始其它的操作,所以就会出错,可以加上一些延时,问题就解决了.这种情况应该比较多的发生在通信上面
于是尝试着把动态分配数组的malloc改成char str[256]这种形式,这样程序就可以正常执行了。
后来想想,初学者很容易犯这类错误,以后碰到类似的问题应该格外当心才是。