原文:记一个非常诡异的关于 shared_ptr 的 bug

问题描述 今天写项目的时候遇见一个特别诡异的 bug,体现在在执行某条语句时,程序会莫名崩溃,并且给出的错误信息也非常难懂,只有一个malloc : invalid size unsorted 错误信息,从直观上看起来是 malloc 函数无法分配到内存,就想着应该是哪个动态分配内存的地方变量没获取到值,但是调试的时候才发现没这么简单。 问题排查 调试的时候,发现程序崩溃的时候的调用栈最后竟然是一 ...

2021-10-27 09:15 2 2030 推荐指数:

查看详情

实现一个简单的shared_ptr

翻看以前的代码的时候发现一个shared_ptr的简单实现。 我记得是网上的一篇例子(好像改了一点),但是又懒得找出处了 ╮(╯▽╰)╭。 觉得这份代码足以用来初步了解shared_ptr的实现了。 一般来说,智能指针的实现需要以下步骤: 1.一个模板指针T* ptr,指向实际的对象 ...

Tue Aug 30 23:45:00 CST 2016 3 4525
shared_ptr 用法

引入 shared_ptr 是c++为了提高安全性而添加的智能指针,方便了内存管理。 特点 shared_ptr 是通过指针保持对象共享所有权的智能指针。多个 shared_ptr 对象可占有同一对象。这便是所谓的引用计数(reference counting)。一旦最后一个这样的指针被销毁 ...

Sun Sep 01 23:30:00 CST 2019 0 1012
boost::shared_ptr

boost::shared_ptr是boost库中用来管理指针的模板,使用它需要#include <boost/shared_ptr.hpp>。本文介绍它的一些基本用法。 第一,boost::shared_ptr管理的指针所指向的对象必须在堆中,因为该模板会在对象离开作用域后调用 ...

Thu Feb 21 00:12:00 CST 2019 0 1035
c++ shared_ptr

shared_ptr是通过指针保持对象共享所有权的智能指针。多个shared_ptr对象可占有同一资源,当最后一个shared_ptr对象被销毁或者通过operator=,reset()操作赋予另一指针时,其管理的资源才会被回收。 管理同一资源的不同shared_ptr对象能在不同线程中 ...

Sun Oct 27 06:26:00 CST 2019 0 287
shared_ptr的 reset用法

注意,不能将一个原始指针直接赋值给一个智能指针,如下所示,原因是一个是类,一个是指针。   reset()包含两个操作。当智能指针中有值的时候,调用reset()会使引用计数减1.当调用reset(new xxx ...

Tue Apr 06 17:29:00 CST 2021 0 3706
shared_ptr的原理与应用

new与赋值的坑 赋值(assignment)和new运算符在C++与Java(或C#)中的行为有本质的区别。在Java中,new是对象的构造,而赋值运算是引用的传递;而在C++中,赋值运算符意味着 ...

Sat Mar 01 09:54:00 CST 2014 1 4438
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM