上周排查一个线上服务的内存泄漏问题,系统跑了三天内存占用从800M涨到4G,最后OOM崩溃。用Valgrind跑了一夜,报告里密密麻麻的“definitely lost”看得人头皮发麻。问题最终定位到一段三年前写的图像预处理代码——一个不起眼的cv::Mat和uchar*混用导致的泄漏。今天我们就聊聊那些年我们踩过的内存坑。从裸指针到智能指针的思维转变很多C++程序员转型做CV开发时,容易带着“C with class”的习惯写代码。比如下面这种经典错误模式:// 别这样写!这是内存泄漏的温床voidprocess_frame(){uchar*buffer=newuchar[
117.内存管理优化:避免内存泄漏,提升C++代码健壮性
上周排查一个线上服务的内存泄漏问题,系统跑了三天内存占用从800M涨到4G,最后OOM崩溃。用Valgrind跑了一夜,报告里密密麻麻的“definitely lost”看得人头皮发麻。问题最终定位到一段三年前写的图像预处理代码——一个不起眼的cv::Mat和uchar*混用导致的泄漏。今天我们就聊聊那些年我们踩过的内存坑。从裸指针到智能指针的思维转变很多C++程序员转型做CV开发时,容易带着“C with class”的习惯写代码。比如下面这种经典错误模式:// 别这样写!这是内存泄漏的温床voidprocess_frame(){uchar*buffer=newuchar[