ubuntu16.04下运行plt.show()报错:free(): invalid pointer: 0x000055d318efde90

**

ubuntu16.04下运行plt.show()报错:error in ‘home/lz/anaconda3/envs/tensorflow/bin/python3.6’: free(): invalid pointer: 0x000055d318efde90

**
问题:
近来学习图像处理遇到一个问题,每次运行plt.imshow(‘xxx.jpg’) plt.show()时,都会有大片报错,如下图所示:

在这里插入图片描述
在这里插入图片描述
报错中大致有以下关键字眼:
error in ‘home/lz/anaconda3/envs/tensorflow/bin/python3.6’: free(): invalid pointer: 0x000055d318efde90

process finished with exit code 134 (interrupted by signal 6: SIGABRT)
但是在调试模式下,程序不会报错。

过程:

试了下网上为数不多的解决办法,一种是pycharm配置环境变量:https://blog.csdn.net/jizhidexiaoming/article/details/80918868
还有个安装编译libtcmalloc的方法:
https://www.cnblogs.com/zealousness/p/9578615.html
然而在我这都没有解决问题。

于是试着放到终端运行一下看看能不能成功,然后根据报错提示:
src/tcmalloc.cc:278] Attempt to free invalid pointer 0xcb002200a8c200a8
到网上搜索,在一篇博客提供的思路下解决了问题。
https://blog.csdn.net/Eclipsesy/article/details/78790498

结论:
后面发现应该是调用顺序引发的冲突,在同时调用cv2和plt时,如果将import cv2放在import matplotlib.pyplot as plt的前面,就会出现以上报错,只要调换一下顺序:
import matplotlib.pyplot as plt
import cv2
程序就能正常运行了!

参考文献:
【1】 https://blog.csdn.net/jizhidexiaoming/article/details/80918868
【2】 https://www.cnblogs.com/zealousness/p/9578615.html
【3】 https://blog.csdn.net/Eclipsesy/article/details/78790498


版权声明:本文为lizhongnudt原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。