double free detected in tcache 2问题记录

Posted on   Further_Step  阅读(54)  评论(0编辑  收藏  举报  
#include <iostream>
class A {
public:
    void Test() {
        std::cout << "A::Test" << std::endl;
        delete this;
    }
};

class B : public A {
public:
    void Test() {
        std::cout << "B::Test" << std::endl;
    }
};

int main() {
    A* b = new B();
    b->Test();
    free(b);
    return 0;
}

解释,当执行free(b);时会报错,因为在 b->Test();调用时已经执行了delete this;将堆区的内存释放掉,此时再次根据b的地址去释放会发现不存在,所以报错double free detected in tcache 2

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示