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指针使用
相关文章推荐
- Effective C++ 52. Write placement delete if you write placement new
- More Effective C++:理解new和delete
- 读书笔记_Effective_C++_条款四十九:了解new_handler的行为
- In which of the following does a C++ developer use the placement new syntax to make new allocate an
- C++ new placement语法
- c++ placement new
- More Effective C++:理解new和delete
- 读书笔记 effective c++ Item 50 了解何时替换new和delete 是有意义的
- more-effective-c++ 序列1 new和delete的测试
- More Effective C++ ——08_理解各种不同含义的new和delete
- effective C++ 学习 (Customizing new and delete)
- (Boolan)详解 C++ Operator new\delete、placement new\delete、Array new\delete
- C++ Placement New
- C++ Placement New
- 读书笔记 effective c++ Item 49 理解new-handler的行为
- More Effective C++之Item M8:理解各种不同含义的new和delete
- C++ Placement New
- C++ Placement New
- Effective C++学习笔记:对应的new和delete要采用相同的形式
- 读书笔记 effective c++ Item 16 成对使用new和delete时要用相同的形式