gpt4 book ai didi

c - 通过字符串声明分配内存

转载 作者:太空宇宙 更新时间:2023-11-03 23:49:50 24 4
gpt4 key购买 nike

当我这样声明一个字符串时:

char string[] = "Hello";

它实际上等同于 -

char string[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

因此通过声明为字符串分配了堆栈上的内存。但是当我声明这样的字符串时会发生什么:

char *string = "Hello";

变量“string”包含字符串首字母“H”在内存中的地址。我想问:

  1. 字符串在内存中的位置?栈\堆\等

  2. 是否自动为字符串分配了足够的内存,或者我必须分配内存(例如,通过malloc)自己到字符串?如果我必须这样做,我该怎么做(我想要一个小代码示例)?

我想指出,我的问题的答案很可能取决于系统。如果是,请注意这一事实,并尝试根据流行平台(Windows、Linux 等)上发生的情况进行回答。

最佳答案

未定义 char *string = "Hello"; 中字符串的存储位置。实际上,它通常位于称为文本段的只读存储器中,其中存储程序的代码。指针存储在“堆栈”或数据段中,具体取决于定义是在函数内部还是在任何函数外部。

您不必为字符串分配内存。

答案与系统无关(除了系统可能将字符串存储在任何方便的位置,不同的系统可能将其存储在不同的位置)。

关于c - 通过字符串声明分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22952282/

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