socket通信中的动态分配内存导致的错误

今天在调试socket的时候遇到了这样一个比较奇怪的问题。

我在单步调试多线程程序的时候是没有错误的,但是一运行程序马上崩溃了。

原来以为是多线程的问题,但是我在程序崩溃之后调试了一下,找到出错的地方,发现是在使用数组的时候出错了。

这个数组是动态分配内存malloc出来的,百度了一下,看到有人跟我遇到了相同的问题:


时间问题.你单步,.每一步花的时间多,所以程序执行完成了,没有错误,

而你直接执行,执行时间太快,可能你要的结果还没出来,就执行了,比如读数据,其实你还没读全,就开始其它的操作,所以就会出错,可以加上一些延时,问题就解决了.
这种情况应该比较多的发生在通信上面


于是尝试着把动态分配数组的malloc改成char str[256]这种形式,这样程序就可以正常执行了。

后来想想,初学者很容易犯这类错误,以后碰到类似的问题应该格外当心才是。




你可能感兴趣的:(多线程,socket,百度)