Por que não consigo editar um caractere em um caractere *?

Abaixo é um exemplo extremamente simples. Ele compila bem usando o gcc no Mac OS X (Snow Leopard). Em tempo de execução, gera erro de barramento: 10. O que está acontecendo aqui?

char* a = "abc";
a[0] = 'c';