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

[code lang=”cpp”]/*
* 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;
}

[/code]

发表评论