当我在 C++ 中动态分配数组时,我使用以下内容:
char* arr = new char[length];
很自然地,当我开始学习 C 时,我一直使用以下方法来分配我的字符串:
char* arr = malloc(sizeof(char[length]));
但是,我发现常见的做法是使用以下内容:
char* arr = malloc(length * sizeof(char));
上面的陈述是否等效,或者有什么理由我不应该使用
sizeof(char[length])
?
两者实际上是相同的。
sizeof(char[length])
计算长度为 char
的 length
数组的大小(以字节为单位)。该值与 length * sizeof(char)
相同。
虽然后者更常见,但前者也很好。