【问题标题】:Allocating Memory for string in c?在c中为字符串分配内存?
【发布时间】:2015-10-25 09:04:13
【问题描述】:

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

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

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

或者两者都没有?

谢谢

**注意编辑以反映愚蠢的错字。我不小心把选项粘贴错了

【问题讨论】:

  • 你最后的猜测:两者都不是。在这两种情况下,括号都不成对匹配,因此不清楚您要做什么。但我的猜测是分配足够的内存来存储一个size_t 类型的变量。

标签: c memory sizeof allocation


【解决方案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() 的返回值强制转换,参见this

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

所以,总而言之,您的代码应该是这样的。

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

【讨论】:

  • 这是有道理的。谢谢。不过只有一个问题。如果我最终没有遵循 5,还需要 4 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
相关资源
最近更新 更多