new在c语言中的作用,C语言中new的用法

匿名用户

1级

2012-01-26 回答

new是C++中用于动态内存分配的运算符,在C语言中一般使用malloc函数e79fa5e98193e78988e69d8331333337386663。

new有三种用法:new operator、operator new、placement new

1、new operator:

new operator是最常见的用法,如 Emp* e1 = new Emp;(Emp是一个类) 这里new有两种作用:分配空间、初始化对象(调用了构造函数)

2、operator new:

operator new作用是只分配空间,不调用构造函数,如:Emp* e2 = (Emp*)operator new(sizeof(Emp));

3、placement new:

placement new作用是在已分配好的空间上初始化对象,不分配空间,调用拷贝构造函数,如:new ((void *)e2) Emp(*tb1);

示例代码如下:

// Emp.h

#ifndef _EMP_H_

#define _EMP_H_

class Emp

{

public:

Emp();

Emp(const Emp& other);

~Emp();

};

#endif // _EMP_H_

// Emp.cpp

#include “Emp.h”

#include 

using namespace std;

Emp::Emp()

{

cout<

}

Emp::Emp(const Emp& other)

{

cout<

}

Emp::~Emp()

{

cout<

}

// main.cpp

#include “Emp.h”

#include 

void main()

{

using namespace std;

// new operator 分配空间,调用构造函数

Emp* e1 = new Emp;

// operator new 只分配空间

Emp* e2 = (Emp*)operator new(sizeof(Emp));

// placement new 不分配空间,调用拷贝构造函数

new ((void *)e2) Emp(*e1);

// 显示调用析构函数

e2->~Emp();

// 仅释放空间,不调用析构函数

operator delete(e2);

// 调用析构函数,释放空间

delete e1;

}