-1

调试一个疯狂的系统。一个类的构造函数被多次调用,它们的内存地址是一样的。这是否意味着它们是同一个对象?创建对象@ 0xa3d82a0 创建对象@ 0xa3d82a0 创建对象@ 0xa3d82a0

我还看到 xxxx 是一个守护进程。守护进程是什么意思?

谢谢!

4

2 回答 2

1

这可能只是意味着构造函数被保存在同一个内存块中(引用位置等)以节省内存。

至于问题的第二部分,引用:“守护程序(或服务)是一个后台进程,旨在自主运行,很少或不需要用户干预。”

取自这里(不要理会页面上的任何链接,它们似乎都已经死了。不过,只是拙劣的锚标签)。

于 2013-06-27T19:14:45.170 回答
1

不,这不是同一个对象。一个对象只能构造一次。您看到的行为并非不可能,例如,如果在循环中在堆栈上分配了许多对象:

#include <iostream>

using namespace std;

struct A {
    A() { cout << "Creat" << this << endl; }
};

int main() {
    for (int i = 0; i < 5; i++) {
        A a;
    }
}

这里 'a' 将在同一位置再次构建,打印如下内容:

Creat0xbfcd871f
Creat0xbfcd871f
Creat0xbfcd871f
Creat0xbfcd871f
Creat0xbfcd871f
于 2013-06-27T20:42:35.637 回答