I\'m specifically focused on when to use malloc on char pointers
char *ptr;
ptr = \"something\";
...code...
...code...
ptr = \"something else\";
malloc is for allocating memory on the free-store. If you have a string literal that you do not want to modify the following is ok:
char *literal = "foo";
However, if you want to be able to modify it, use it as a buffer to hold a line of input and so on, use malloc:
char *buf = (char*) malloc(BUFSIZE); /* define BUFSIZE before */
// ...
free(buf);