char *a = "hello"
这样的语句似乎可以访问和打印而在C中没有任何问题。
他们需要malloc吗?
答案 0 :(得分:3)
案例1 : - json or xml
此处char *a = "hello";
是字符指针,它需要有效的地址,并且其分配的有效地址为a
是字符串,即地址。所以这里不需要hello
。
案例2 : - malloc()
此处char *b[]= {"yes", "no"};
是 char指针数组,即b
的每个元素都是{{1}这意味着每个元素都需要使用有效地址进行初始化,并使用b
和pointer
b[0]
分配有效地址yes(i.e address)
。所以这里也不需要b[1]
。
答案 1 :(得分:0)
"你好"这是字符串常量,它驻留在数据段中,它是内存的可读段。
char * a ="你好"只是你要分配const字符串的地址"你好" to char指针a。
如果您尝试使用ptr a修改此const字符串的内容,它将崩溃。 例如 a [1] =' E ' /// - >这是未定义的行为
如果你想拥有内存,那么malloc并将字符串复制到使用malloc创建的内存中。