与char相比,String的大小(以字节为单位)是多少?

时间:2017-04-21 19:29:19

标签: arduino variable-types

我在arduino中面对足够的内存,所以我决定我需要更改变量类型。考虑一下,我想知道 String char (1byte)相比的字节大小。

我知道 String 是一个对象而 char 是一个变量类型。

1 个答案:

答案 0 :(得分:1)

String类中有三个成员变量:

char *buffer;           // the actual char array
unsigned int capacity;  // the array length minus one (for the '\0')
unsigned int len;       // the String length (not counting the '\0')

所有这些广告都2 bytes广(在AVR平台上),所以如果你没有任何内容,那么它实际上可能只有6 bytes

但是,我想你确实需要一些东西,所以对于单个字符,你需要另外2个字节(一个用于该字符,一个用于终止NUL个字符)。 并且由于buffer是动态分配的,因此必须存储有关此分配的内容。

推荐阅读:The Evils of Arduino Strings

另一方面,C字符串更难以使用,但至少你可以完全控制。您可以在堆栈或堆上创建它(String类只能使用堆)。 字符串文字在AVR平台上更加棘手,因为它们存储在程序存储器中,但也被复制到RAM中以占用您不能浪费的空间。有关Arduino - PROGMEMNick Gammon's forumavr-libc pgmspace.h reference page的更多详情。