c++ - 静态变量的地址值可以与堆分配地址匹配吗?

标签 c++ pointers memory static heap-memory

下面是我的一些代码片段

static const int s_kVar1 = 0;
static const int s_kVar2 = 1;

...

void foo()
{
    MyObject *o = new MyObject();
    // Is it ever possible that (o == &s_kVar1) or (o == &s_kVar2)
}

最佳答案

简短的回答是否定的。保证不同的对象具有不同的地址。全局 (s_kVar) 和动态分配的对象 (o) 位于不同的内存区域。

附言但是,是的,您可以滥用语言来打破这种保证。您可以在同一内存位置构造两个不同的对象。

关于c++ - 静态变量的地址值可以与堆分配地址匹配吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46241363/

相关文章:

C编程;需要左值

c++ - 有没有办法打印对象的位表示?

C - 每次循环执行时,在循环中声明的变量是否在同一位置获取内存?

c++ - const char* 是字符串还是指针

c++ - Double 或 int 的 Printf

c++ - 仅包含<opencv2/opencv.hpp>会导致链接错误

c++ - 使用可变参数模板调用成员函数

c++ - 裸指针到底有多糟糕?

c++ - C/C++ 将 void* 转换为 int ( * () ) (int,...);

python - 在 python 中调用函数后不会释放内存