我有这样的代码:
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/