DZ小明
2017-03-12 08:40
采纳率: 75%
浏览 1.4k

定位放置new开辟出的对象的空间在哪?

请看代码:

class A{
private:
    int num;
public:
    A(){
        cout << "A's constructor" << endl;
    }

    ~A(){
        cout << "~A" << endl;
    }
    void show(){
        cout << "num:" << num << endl;
    }
};

int main()
{
    char mem[10];
    mem[0] = 'a';
    mem[1] = '\0';
    mem[2] = '\0';
    mem[3] = '\0';
    cout << (void*)mem << endl;
    new(mem) char('b');
    A* p = new(mem) A;
    p->show();
    cout << p << endl;
    cout << (void*)mem << endl;
    system("pause");
    return 0;
}

运行完之后,(void*)mem的地址和p的地址一样,但是mem[0]里面的值还是‘a'没变,
那么开辟出的A类对象p的空间在哪?地址在哪?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • threenewbee 2017-03-12 08:44

    我测试的可以变为b
    http://codepad.org/cVMkdLxv
    这个取决于不同的编译器

    评论
    解决 无用
    打赏 举报