You need to allocate space for reverse. For example
char *reverse = malloc(strlen(string) + 1);
By the way, the rest of the code seems to have an algorithmic bug. I think what you wanted to do was something like:
#include <string.h>
#include <malloc.h>
int main(){
const char *string = "This is not reverse";
int length = strlen(string);
char *reverse = malloc(length + 1);
int i = 0;
while(i < length){
*(reverse + i) = *(string + length - i - 1);
i++;
}
printf("%s\n", reverse);
return 0;
}