malloc的对象调用它的构造函数

Linux/Unix C/C++ xiujie 178℃ 0评论 已收录

malloc只是申请指定空间的大小,主要是在C语言中会用到,在C++中,特别是在类中使用NEW才是申请一个

/*
 * malloc.cpp
 *  自己管理内存 malloc
 *  Created on: 2015年10月10日
 *      Author: LiXiujie
 */
#include <iostream>
class A{
public:
	static A* Construct(int a){
		A* pA = (A*)malloc(sizeof(struct A));
		//pA->A::A(a);
		std::cout <<  "A::Construct() malloc after()" << std::endl;
		new(pA) A(a);
		return pA;
	}

	static void Destruct(A* pA){
		pA->A::~A();
		free(pA);
	}
	void p(){
		std::cout <<  m_nA << std::endl;
	}
private:
	A(int a){
		std::cout <<  "A(int a)" << std::endl;
		m_nA = a;
	}
	~A(){
		m_nA = 0;
		std::cout <<  "~A()" << std::endl;
	}
	int m_nA;
};

int main(int argc, char *argv[]){
	A* pA = A::Construct(6);

	pA->p();
	A::Destruct(pA);
	pA = A::Construct(99);
	pA->p();
	A::Destruct(pA);
	return 0;
}

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址