I am expecting that both following vectors have the same representation in RAM:
char a_var[] = "XXX\x00";
char *p_var = "XXX";
But strange, a call to a library function of type f(char argument[]) crushs the running application if I call it using f(p_var). But using f(a_var) is Ok!
Why?
The first creates an array of char containing the string. The contents of the array can be modified. The second creates a character pointer which points to a string literal. String literals cannot be modified.