最近开发一套基于InfiniBand的网络通讯组件,在使用InfiniBand通讯前,我使用socket来进行同步,在服务端开发中遇到这样的一个问题:A buffer overrun has occurred in IBConnection.exe which has corrupted the program's internal state. Press Break to debug the program or Continue to terminate the program.
For more details please see Help topic 'How to debug Buffer Overrun Issues'. c++的内存管理实在让人蛋疼,找半天没有找到可能导致缓冲区溢出的地方,最后google搜索到一篇关于这方面的文章,按照里面的的提示,一步一步排查,最终得到解决。原文是英文的(http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/29243438-a5ef-404c-8b02-81e039a03459/),现摘录如下:
Hmm, you must have had a pretty big overrun on the stack to cause that. Most likely you have a string which wasn't null terminated and you then used strlen to count the length.