C new的放置語法

2021-05-22 18:03:20 字數 650 閱讀 4623

#include

using namespace std;

struct node{

int u;

node(int uu = 0):u(uu){

//cout << "create" << endl;

~node(){

u = -1000;

//cout << "delete/n";

int main(){

node mem[100];

node *p = mem;

node *q = new (p)node(10);

cout << p << ' ' << q << ' ' << mem << endl;

cout << q->u << endl;

q->~node();

node *r = new(p)node(20);

cout << r->u << endl;

for(int i = 0; i < 10; ++i)

cout << mem[i].u << endl;

return 0;

node *q = new (p)node(10); 就是從p為首位址分配一段記憶體給q,這段記憶體是已經預先開闢的,可能是用來共享的吧,所以不用的時候要掉用析構函式而不是delete。

C new 失敗的處理

我們都知道,使用 malloc calloc 等分配記憶體的函式時,一定要檢查其返回值是否為 空指標 亦即檢查分配記憶體的操作是否成功 這是良好的程式設計習慣,也是編寫可靠程式所必需的。但是,如果你簡單地把這一招應用到 new 上,那可就不一定正確了。我經常看到類似這樣的 int p new int...

C new失敗的處理

我們都知道,使用 malloc calloc 等分配記憶體的函式時,一定要檢查其返回值是否為 空指標 亦即檢查分配記憶體的操作是否成功 這是良好的程式設計習慣,也是編寫可靠程式所必需的。但是,如果你簡單地把這一招應用到 new 上,那可就不一定正確了。我經常看到類似這樣的 int p new int...

c new的用法總結

c 中,new的用法很靈活,這裡進行了簡單的總結 1.new 分配這種型別的乙個大小的記憶體空間,並以括號中的值來初始化這個變數 2.new 分配這種型別的n個大小的記憶體空間,並用預設建構函式來初始化這些變數 include include using namespace std int main...