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

时间:2015-10-25 09:04:14

标签: c memory sizeof allocation

如何为c?

中的给定char数组* bla分配内存
blaarray = (char*)malloc(strlen(bla)*sizeof(bla));

blaarray = (char*)malloc(strlen(bla)*sizeof(char*));
是不是?

感谢

**注意编辑以反映愚蠢的拼写错误。我意外地错误地粘贴了选项

1 个答案:

答案 0 :(得分:6)

如果您希望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(),请参阅this

6)sizeof(char)为1,所以你可以跳过它。

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

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