C++ tcmalloc::SLL_Next segmentation fault

Posted 软件工程小施同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ tcmalloc::SLL_Next segmentation fault相关的知识,希望对你有一定的参考价值。

显示调用栈不是出错的代码点,怀疑是内存错误。

Program terminated with signal S, Segmentation fault.
#0  0x00000000010ca227 in tcmalloc::SLL_Next(void*) ()
(gdb) bt
#0  0x00000000010ca227 in tcmalloc::SLL_Next(void*) ()
#1  0x00000000010ca2b8 in tcmalloc::SLL_TryPop(void**, void**) ()
#2  0x00000000010ca715 in tcmalloc::ThreadCache::FreeList::TryPop(void**) ()
#3  0x00000000011ebe6c in tc_newarray ()

 

这篇文章遇到相同的报错,原因是double free

查找内存错误 - 金庆的专栏 - C++博客http://www.cppblog.com/jinq0123/archive/2019/12/16/217028.html 

我遇到的原因是,使用了一个map,使用clear清空,多次之后,map的空间便没有释放,所以得使用swap清空

#include <iostream>
#include <map>
#include <malloc.h>
using namespace std;
void func()

        map<int,string> mp;
        int i = 5000000;
        while(i--)
            mp.insert(make_pair(i,string("hell000o")));
        map<int,string>().swap(mp);

int main()

        func();
        cout <<"done."<<endl;
        malloc_trim(0);
        while(1);

 

C++ map数据清理clear效率及彻底释放内存_chenyulancn的博客-CSDN博客_c++ map 清空模拟实际生产情况的测试代码,map中的value保存的是对象。#include<map>#include<vector>#include<string>#include <iostream>#include <time.h>using namespace std;class useTestpublic: useTest() ; map<string,string> testMap; https://blog.csdn.net/chenyulancn/article/details/122305822

以上是关于C++ tcmalloc::SLL_Next segmentation fault的主要内容,如果未能解决你的问题,请参考以下文章

C++ tcmalloc::SLL_Next segmentation fault

C++ STL之set详解

说明用 C++ 编写抽象层的简单示例

c++基本语言

OpenGL矩阵乘法C++

c++容器简单总结