gpt4 book ai didi

c++ - 空间如何分配 char* 数组?

转载 作者:太空宇宙 更新时间:2023-11-04 06:23:56 25 4
gpt4 key购买 nike

例如,在

#define NUM_THREADS 8
char *messages[NUM_THREADS];
messages[0] = "English: Hello World!";
messages[1] = "French: Bonjour, le monde!";
messages[2] = "Spanish: Hola al mundo";
messages[3] = "Klingon: Nuq neH!";
messages[4] = "German: Guten Tag, Welt!";
messages[5] = "Russian: Zdravstvytye, mir!";
messages[6] = "Japan: Sekai e konnichiwa!";
messages[7] = "Latin: Orbis, te saluto!";

在编译时,编译器是否计算所有这些字符串的最大长度,然后预留空间 = NUM​​_THREADS * ( max_len + 1 )。为字符串末尾的空字节添加 1。还是根据四舍五入到最接近的单词的长度为每个字符串分配不同数量的空间?

然而,这并不总是可行的,因为初始化不一定在编译时发生。我假设指向将存储字符串的数据部分的指针包含在 messages[i] 中。

最佳答案

这些字符串使用的内存恰好与字符串长度加一(终止空字符)一样长。您定义的数组有 4*NUM_THREADS 个字节(假设您使用普通的 32 位 C 编译器),因为它只包含指针,而不是整个字符串的拷贝。

没有舍入,没有猜测,没有数据模糊。这是 C。

关于c++ - 空间如何分配 char* 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29522621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com