为c中的字符串分配内存?

为c中的字符串分配内存?,c,memory,sizeof,allocation,C,Memory,Sizeof,Allocation,如何为c中给定的char数组*bla分配内存 blaarray = (char*)malloc(strlen(bla)*sizeof(bla)); 或 或者两者都没有 谢谢 **注意编辑以反映愚蠢的打字错误。如果希望blaarray与字符串bla的大小相同,我意外地错误粘贴了选项 blaarray = malloc((strlen(bla)+1) * sizeof(char)); 现在让我解释一些要点 1) 要获取字符串的长度,请仅使用strlen()而不是sizeof 2) 必须添加1,因

如何为c中给定的char数组*bla分配内存

blaarray = (char*)malloc(strlen(bla)*sizeof(bla));

或者两者都没有

谢谢


**注意编辑以反映愚蠢的打字错误。如果希望
blaarray
与字符串
bla
的大小相同,我意外地错误粘贴了选项

blaarray = malloc((strlen(bla)+1) * sizeof(char));
现在让我解释一些要点

1) 要获取字符串的长度,请仅使用
strlen()
而不是
sizeof

2) 必须添加
1
,因为
strlen()
在返回长度时不包含
\0
字符

3)
char*
是指向
char
的指针,要获得
char
的大小,应该执行
sizeof(char)

4) 当然,您需要声明
blaarray
,您可以这样做

char* blaarray;
5) 您不需要强制转换
malloc()
的返回,请参阅

6)
sizeof(char)
为1,因此可以跳过该选项

所以,你的代码应该是这样的

char* blaarray;
blaarray = malloc((strlen(bla)+1));

如果希望
blaarray
与字符串
bla

blaarray = malloc((strlen(bla)+1) * sizeof(char));
现在让我解释一些要点

1) 要获取字符串的长度,请仅使用
strlen()
而不是
sizeof

2) 必须添加
1
,因为
strlen()
在返回长度时不包含
\0
字符

3)
char*
是指向
char
的指针,要获得
char
的大小,应该执行
sizeof(char)

4) 当然,您需要声明
blaarray
,您可以这样做

char* blaarray;
5) 您不需要强制转换
malloc()
的返回,请参阅

6)
sizeof(char)
为1,因此可以跳过该选项

所以,你的代码应该是这样的

char* blaarray;
blaarray = malloc((strlen(bla)+1));

你最后的猜测是:两者都不是。在这两种情况下,括号成对不匹配,因此不清楚您要做什么。但我的猜测是分配足够的内存来存储一个
size\t
类型变量。您最后的猜测是:两者都不是。在这两种情况下,括号成对不匹配,因此不清楚您要做什么。但我的猜测是分配足够的内存来存储一个
size\u t
type变量。谢谢不过只有一个问题。如果我最终没有遵循5,还需要4吗?这是有道理的。谢谢不过只有一个问题。如果我最终没有遵循5,还需要4吗?