// Definiujemy litera.
_LIT( KTekst1, "Tekst1" );

// Tworzymy deskryptor i odkadamy go na stos CleanupStack.
RBuf buf1;
buf1.CreateL( KTekst1().Length() );
buf1.CleanupClosePushL();

// Kopiujemy dane z literau do deskryptora.
buf1.Copy( KTekst1 );

// Definiujemy kolejny litera.
_LIT( KTekst2, "Tekst2" );

// Tworzymy dynamiczny deskryptor buforowy.
HBufC* hbufc = KTekst2().AllocL();
// hbufc = "Tekst2"

// Deskryptor hbufc przypisujemy do deskryptora
// buf2, ktry odpowiada za zwolnienie pamici zajmowanej
// przez hbufc.
RBuf buf2;
buf2.Assign( hbufc );

// Wymieniamy zawarto deskryptorw buf1 i buf2.
buf1.Swap( buf2 );
// buf1 = "Tekst2"
// buf2 = "Tekst1"

// Zwalniamy deskryptory:
// - buf2
buf2.Close();
// - buf1 znajduje si na szczycie stosu CleanupStack. Metoda
// PopAndDestroy() zawoa na nim metod Close().
CleanupStack::PopAndDestroy();
