C语言中new的用法?

C语言中new的用法


慕森卡
浏览 4409回答 2
2回答

温温酱

new是C++中用于动态内存分配的运算符,在C语言中一般使用malloc函数。new有三种用法:new operator、operator new、placement new1、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);示例代码如下:123456789101112//&nbsp;Emp.h#ifndef&nbsp;_EMP_H_#define&nbsp;_EMP_H_&nbsp;&nbsp;class&nbsp;Emp{public:Emp();Emp(const&nbsp;Emp&&nbsp;other);~Emp();};#endif&nbsp;//&nbsp;_EMP_H_1234567891011121314151617181920212223242526272829303132333435//&nbsp;Emp.cpp#include&nbsp;“Emp.h”#include&nbsp;<iostream>using&nbsp;namespace&nbsp;std;Emp::Emp(){cout<<“Emp…”<<endl;}Emp::Emp(const&nbsp;Emp&&nbsp;other){cout<<“Copy&nbsp;Emp…”<<endl;}Emp::~Emp(){cout<<“~Emp…”<<endl;}//&nbsp;main.cpp#include&nbsp;“Emp.h”#include&nbsp;<iostream>void&nbsp;main(){using&nbsp;namespace&nbsp;std;//&nbsp;new&nbsp;operator&nbsp;分配空间,调用构造函数Emp*&nbsp;e1&nbsp;=&nbsp;new&nbsp;Emp;//&nbsp;operator&nbsp;new&nbsp;只分配空间Emp*&nbsp;e2&nbsp;=&nbsp;(Emp*)operator&nbsp;new(sizeof(Emp));//&nbsp;placement&nbsp;new&nbsp;不分配空间,调用拷贝构造函数new&nbsp;((void&nbsp;*)e2)&nbsp;Emp(*e1);//&nbsp;显示调用析构函数e2->~Emp();//&nbsp;仅释放空间,不调用析构函数operator&nbsp;delete(e2);//&nbsp;调用析构函数,释放空间delete&nbsp;e1;}
打开App,查看更多内容
随时随地看视频慕课网APP