次のようなコードがあります。
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 は、1 つの整数ではなく、たとえば 100 の int の配列へのポインタである必要があることに注意してください。