在 C++ 中,我有一个 24*7 连续运行的服务器代码,但有时在释放缓冲区时会出现段错误。 我也尝试过try catch。
try {
free(partialBuf);
} catch (...) {
printf("Caught partial buf free error");
}
提前致谢!
最佳答案
由于您显然能够使用 try/catch
,因此您正在编写 C++ 代码。它有助于了解您正在使用哪种语言。
解决方案是使用std::shared_ptr
。您可能有多个地方的指针超出了范围。使用shared_ptr
,您不再调用free
,并且作为奖励,shared_ptr
只会调用delete
一次(在最后一个指针超出范围之后)。
但是,您现在应该使用 new
而不是 malloc
分配内存。
关于c++ - 如何捕获或处理 free() 或 delete() 中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29074248/