Macで以下のコードをコンパイルして実行すると
Bus error: 10
と表示されて終了するんだけど、なんで?

==========
#include <stdio.h>

int main() {
char* str = "hello";
char* head = str;
char* tail = str + sizeof(char);

char tmp = *head;
*head = *tail;
*tail = tmp;
printf("%s", str);

return 0;
}