Instead, always reuse the same shared pointer, or dereference the returned shared pointer if you're not worried about copying the data. TTripleBufferedDataIntBuffer;...int*MyCopy=IntBuffer.ExchangeProducerBuffer();(*MyCopy)=1;//OkMyCopy=IntBuffer.ExchangeProducerBuffer();//Memholding"1"nowavailabletoconsumerthread.(*MyCopy)=2;//Ok