placenew.cpp

来自「C++ Primer(第三版)的随书源代码」· C++ 代码 · 共 40 行

CPP
40
字号
// Section 8.4.5
// $ CC placenew.cpp

/*
  new expression worked!
*/

#include <iostream>
using std::cout;
using std::endl;

#include <new.h>

const int chunk = 16;

class Foo {
public:
        int val()  { return _val; }
        Foo() { _val = 0; }
private:
        int _val;
};

// preallocate the memory, but no Foo objects
char *buf = new char[ sizeof(Foo) * chunk ];

int main() {
        // create a Foo object in buf
        Foo *pb = new (buf) Foo;

        // check that an object was placed in buf
        if ( pb->val() == 0 )
                cout << "new expression worked!" << endl;

        // cannot use pb here
        delete[] buf;

        return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?