c++ - 如何捕获或处理 free() 或 delete() 中的段错误

标签 c++ linux

在 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/

相关文章:

node.js - 更新后npm似乎没有更新

c - 为什么 mkdir() 和 rmdir() POSIX 系统调用在不同的头文件中?

c++ - 如何在 CMake 中使用对象库创建共享库

linux - 为什么我用 autoconf2.6x 构建 autoconf 失败,它的版本无论如何都比 2.6 新

c++ - 我可以分配一个指针对象数组=另一个对象吗?

c++ - 代码辅助,OpenGL VAO/VBO 类不绘制

c++列出(LINUX)中的所有目录和子目录

linux - laravel 500 内部服务器错误?

c++ - 为什么 nullptr_t 不是关键字

多路复用时 C++ ffmpeg 库帧速率不正确