最近尝试apr库时,发现自己编写的程序每次执行到特定的地点后,新建文件时卡主,改为调试模式后在创建文件处异常终止。但是检查创建函数的代码,无任何问题。
异常终止时又未提示具体异常的代码行,仅仅提示异常出现在apr-1.dll中,无法定位到具体的代码。
问题的根本原因在于调用rv = apr_socket_recv(newsock, buf, &bytes_read);时,buf分配的是120个长度,而bytes_read给了256,导致组越界引起的一些列问题。
内存池指针被清空为NULL,socket描述符也被置为0。