En Informática, copy-on-write (inglés para «copiar al escribir», a veces abreviado COW) es una política de optimización utilizada en programación.
Si múltiples procesos piden recursos que inicialmente son indistinguibles (iguales), se les devuelven punteros al mismo recurso; en el momento en que un proceso intenta modificar su "copia" del recurso, se crea una copia auténtica para prevenir que los cambios producidos por dicho proceso sean visibles por todos los demás.
La función calloc también puede aprovechar esta estrategia teniendo una página de memoria física escrita totalmente con ceros.
La clase string provista por la biblioteca estándar de C++, por ejemplo, fue diseñada específicamente para permitir implementaciones con copy-on-write.
En este contexto, si existe código multihilo, COW puede convertirse en un obstáculo, ya que el marcado de objetos en diferentes hilos necesario para compartir la misma representación para todos los procesos que quieran acceder dichos objetos puede superar fácilmente los beneficios de este mecanismo.