C++如何存储全局变量?

问题描述 投票:0回答:1

我测试了以下代码:

#include <iostream>

class Test {
public:
    Test(const char *name) :name(name) { std::cout << name << ": constructing " << this << std::endl; }
    ~Test() { std::cout << name << ": destructing " << this << std::endl; }
private:
    const char *name;
};

Test global("global");
Test global2("global2");

int main() {}

令我惊讶的是,输出结果是

global: constructing 0x104f84000
global2: constructing 0x104f84008
global2: destructing 0x104f84008
global: destructing 0x104f84000

但是据我所知,堆变量的地址是一一往下走的。为什么在全局变量的情况下会增加?

c++ global-variables
1个回答
0
投票

如果你看到任何进程的内存布局,全局变量都存储在进程内存的数据段中。在任何进程中,最低地址都是代码段,它包含进程中要执行的指令。接下来是数据段,它包含所有全局变量。所以,在这里你可以看到全局变量的地址正在增加。

© www.soinside.com 2019 - 2024. All rights reserved.