char * a [] = {" yes"," no"}是否需要malloc?

时间:2018-05-12 09:14:50

标签: c++ c

像<{1}}或char *a = "hello"这样的语句似乎可以访问和打印而在C中没有任何问题。 他们需要malloc吗?

2 个答案:

答案 0 :(得分:3)

案例1 : - json or xml此处char *a = "hello";是字符指针,它需要有效的地址,并且其分配的有效地址为a是字符串,即地址。所以这里不需要hello

案例2 : - malloc()此处char *b[]= {"yes", "no"}; char指针数组,即b的每个元素都是{{1}这意味着每个元素都需要使用有效地址进行初始化,并使用bpointer b[0]分配有效地址yes(i.e address) 。所以这里也不需要b[1]

答案 1 :(得分:0)

&#34;你好&#34;这是字符串常量,它驻留在数据段中,它是内存的可读段。

char * a =&#34;你好&#34;只是你要分配const字符串的地址&#34;你好&#34; to char指针a。

如果您尝试使用ptr a修改此const字符串的内容,它将崩溃。 例如 a [1] =&#39; E &#39; /// - &gt;这是未定义的行为

如果你想拥有内存,那么malloc并将字符串复制到使用malloc创建的内存中。