gpt4 book ai didi

c++ - 内存中的字符串

转载 作者:太空狗 更新时间:2023-10-29 19:49:40 25 4
gpt4 key购买 nike

struct Example
{
char* string;
int x;
};

当我分配 Example 的新实例时,分配了 8 个字节(假设 sizeof(char*)=4)。所以当我这样调用它时:

Example* sp = new Example();
sp->string = "some text";

字符串是如何分配的?是否放置在随机的空内存位置?或者 sp 和成员 string 之间是否存在某种关系?

那么,"some text" 进行了动态内存分配?

最佳答案

像这样的字符串字面量被放在编译器想要放置它们的任何地方,它们有一个静态存储持续时间(它们在整个程序的生命周期内持续),并且它们永远不会在内存中移动。

编译器通常将它们存储在可执行文件本身的内存的只读部分中,因此当您执行 something = "some text"; 时,它只会生成 something 指向内存中的那个位置。

关于c++ - 内存中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7378712/

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