I am trying to reverse string using pointer (ref source). in function
string_reverse
Bus Error happened at this line when copying character from char pointer end to start char pointer  :
 *start = *end;
Can some one explain why there is bus error happened at below line?
*start = *end
Full code below:
#include <stdio.h>
#include <string.h>
void string_reverse(char* str)
{
    int len = strlen(str);
    char temp;
    char *end = str;
    char *start = str;
    /* Move end pointer to the last character */
    for (int j = 0; j < len-1; j++)
    {
        end++;
    }
    for(int i = 0; i< len/2;i++ )
    {
        temp = *start;
        *start = *end;
        *end = temp;
        /* update pointer positions */
        start++;
        end--;
    }
    
}
int main( void ) 
{
    char *str = "test string";
    
    printf("Original string is %s\n", str);
    string_reverse(str);
    printf("Reverse string is %s\n", str);
    return 0;
}
Actual result: Bus Error happened at line
*start = *end;
Expected output:
Reverse string is gnirts tset

 
    