gpt4 book ai didi

c - C中的内联字符串数组是否分配在堆栈上?

转载 作者:太空狗 更新时间:2023-10-29 14:55:38 25 4
gpt4 key购买 nike

在 C 中,考虑以下“内联”字符串数组:

char *string1 = "I'm a literal!";
char *string2 = malloc((strlen(string1) + 1) * sizeof(char));
//Do some string copying
...
char string3[] = {'a','b','c','\0'};
char *stringArray[] = {string1, string2, string3};

stringArray 是否只包含三个指针中的每一个的副本?

数组会分配到栈上吗?

最佳答案

stringArray 分配在堆栈上,它的每个元素都是一个指向char 的指针。更具体地说:

  • string1指针在栈中,其值为数据段中只读字符串的第一个字符的地址
  • string2指针在栈上,它的值是分配在堆上的一 block 内存块的地址
  • string3 是一个数组,在栈上占用4 * sizeof(char) 个字节
  • stringArray 是一个数组,在堆栈上占用3 * sizeof(char *) 个字节。

关于c - C中的内联字符串数组是否分配在堆栈上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4228671/

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