您的位置:首页 > 编程语言 > C语言/C++

Effective C++ Placement new

2014-04-10 22:27 387 查看
#include <iostream>
#include <cstdlib>

using namespace std;

class Card {
private:
int m_SerialNumber;
public:
Card(int id) : m_SerialNumber(id) {}
~Card() {cout<<"~Card"<<endl;}
void print() {cout<<m_SerialNumber<<endl;}
};

int main() {
int num = 10;
void *rawMemory = operator new[](num * sizeof(Card));
Card *cards = static_cast<Card*>(rawMemory);

for (int i=0; i<num; i++) {
new(&cards[i]) Card(i+1);
}

for (int i=0; i<num; i++) {
cards[i].print();
}

for (int i=num-1; i>=0; i--) {
cards[i].~Card();
}
operator delete[](rawMemory);
system("pause");
return 0;
}


这么奇葩的操作。

operator delete[] 只能对由对应 operator new[] 得到的空间指针变量操作,不能直接对cards指针使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: