以下代码之间的区别是什么:
char* str = "this is a string"
从这一个:
char* str = strdup("this is a string")
使用场景?
在这个宣言中
char *str="this is a string";
Run Code Online (Sandbox Code Playgroud)
指针str指向字符串文字的第一个字符"this is a string".字符串文字1)具有静态存储持续时间,2)可能不会更改.
从而
str[0] = 'T'; // undefined behaviour
free( str ); // undefined behaviour
Run Code Online (Sandbox Code Playgroud)
在这个宣言中
char *str = strdup("this is a string");
Run Code Online (Sandbox Code Playgroud)
指针str指向包含字符串"this is a string"的动态分配字符数组的第一个字符.您1)在不再需要阵列时必须释放内存2)您可以更改阵列中的字符.
str[0] = 'T'; // valid
free( str ); // valid
Run Code Online (Sandbox Code Playgroud)
可以说在第一种情况下,字符串的所有者是编译器,在第二种情况下,字符串的所有者是程序员.:)