gpt4 book ai didi

c++ - 什么内存用于在方法或函数之外声明的变量

转载 作者:行者123 更新时间:2023-11-30 00:52:12 24 4
gpt4 key购买 nike

我想知道当我声明一个变量并在函数或方法之外初始化一个值时使用了什么内存空间,例如,

// CBar.h>
class CBar
{
public:
CBar();
~CBar();
};

// CBar.cpp
std::string const NAME = "mr.foo";

CBar::CBar()
{
std::cout << NAME << std::endl;
}

CBar::~CBar()
{
}

我在方法之外声明的 NAME 变量。声明和初始化这个 NAME 变量有什么问题吗?每次我创建 CBar 实例时,NAME 变量仍然存在吗?

谢谢。

最佳答案

在您的代码中,NAME 是一个静态变量(类似于文件 CBar.cpp 中的全局变量)。它在程序的最开始实例化一次,并在整个程序中存在(内存保持分配状态)。

无论您实例化或删除 CBar 对象多少次,该值/内存将始终可访问(从 CBar.cpp 中),因为该变量独立于 CBar 类。

从技术上讲,静态内存存在于已初始化的数据段中。有关内存区域的详细解释,请参阅此答案:Global memory management in C++ in stack or heap?

关于c++ - 什么内存用于在方法或函数之外声明的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19614270/

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