c++ - 它是否与共享指针一起正常工作(C++)

标签 c++ shared-ptr

我有这样的代码:

typedef std::shared_ptr<int> BUFFER_TYPE  
class MyClass
{
     BUFFER_TYPE buffer;
 public:
     MyClass(int n)
     {
         buffer=std::make_shared<int> (n);
     }
     MyClass()
     {
         buffer=null;
     }
     BUFFER_TYPE GetBuffer()
     {
          return buffer;
     } 
}

MyClass GetMyClass()
{
    MyClass x(200);
    return x;
}

void SetMyClass(MyClass cl)
{
    MyClass y=cl;
    BUFFER_TYPE buffer=y.GetBuffer();
    buffer[20]=100;
}

void main()
{
    MyClass c(100);
    MyClass d=c;
    MyClass e=GetMyClass();
    SetMyClass(e);
    BUFFER_TYPE buffer=e.GetBuffer();
    printf("Buffer is %d\n",buffer[20]);
}

这段代码有内存泄漏吗?

它是否正常工作?

我是否正确使用了 shared_ptr?

请注意,buffer 应该是一个指向 100 int 而不是一个整数的数组的指针。

最佳答案

buffer应该是 int 的数组,代码不正确。 std::shared_ptr管理指向单个 对象的指针。而不是 std::shared_ptr<int>使用 std::vector<int> .

关于c++ - 它是否与共享指针一起正常工作(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360498/

相关文章:

c++ - Visual Studio 2017 : namespace "System" has no member "Windows"

c++ - Qt 中的 WM_SOCKET

c++ - 将weak_ptr 与循环引用一起使用

c++ - 为什么 shared_ptr 需要保存 weak_ptr 的引用计数?

c++ - 用 C++ 字符串替换 snprintf

c++ - 如何在 Windows 10 中使用 C++ 输出低 ASCII?

c++ - 具有指针参数的类函数未保存到 vector

c++ - Boost::处理输出空行

c++ - 没有用于初始化 const std::shared_ptr<> 的匹配构造函数

c++ - 如何避免在不适当的线程上下文中破坏 shared_ptr?