定位放置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的空间在哪?地址在哪?

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