Sim, eu posso reproduzir esse fenômeno. Há um visualizador gratuito da área de transferência que permite que você veja o que aconteceu:
- primeiro, mostra um link " link ":
- agoravocêtentausaressastringcomoumnomedearquivo
- nomomentoemqueamensagemdeerroéexibida,vocêvêqueoconteúdodaáreadetransferênciafoialteradopara"httpstackoverflow.comusers123456user":
EssasalteraçõesforamfeitaspeloWindowsExplorer,queremoveoscaracteresASCII"errados" da string. O ponto importante aqui é que obtemos o conteúdo da área de transferência por referência (e não pelo valor como uma cópia), é por isso que uma mudança é possível!
[EDITADO]
- Pergunta: você pode explicar "por referência e não por valor" um pouco mais?
Existem duas maneiras de passar o parâmetros na programação : por valor e por referência.
Quando um parâmetro é passado por referência, o chamador e o chamado usam a mesma variável para o parâmetro. Se o receptor modificar a variável de parâmetro, o efeito ficará visível para a variável do chamador.
Quando um parâmetro é passado por valor , o chamador e o chamado têm duas variáveis independentes com o mesmo valor . Se o receptor modificar a variável de parâmetro, o efeito não será visível para o chamador.
A área de transferência do Windows pode ter um conteúdo enorme: imagens, texto e assim por diante. É por isso que é melhor copiar apenas um endereço deste bloco de memória em vez de copiar todo o conteúdo.