成员函数中能free(this);这样用吗,该如何解决

成员函数中能free(this);这样用吗
在类的成员函数中能这样用吗,free(this),delete   this?这样能把动态分配的空间释放掉吗,下面这个程序用free(this),也没报错,不过总觉得怪怪的,大家给说说
//:   C13:MallocClass.cpp
//   Malloc   with   class   objects
//   What   you 'd   have   to   do   if   not   for   "new "
#include   "Include\require.h "
#include   <cstdlib>   //   malloc()   &   free()
#include   <cstring>   //   memset()
#include   <iostream>
using   namespace   std;

class   Obj
{
    int   i,   j,   k;
    enum   {   sz   =   100   };
    char   buf[sz];
public:
    void   initialize()   {   //   Can 't   use   constructor
        cout   < <   "initializing   Obj "   < <   endl;
        i   =   j   =   k   =   0;
        memset(buf,   0,   sz);
    }
    void   destroy()   {   //   Can 't   use   destructor
        cout   < <   "destroying   Obj "   < <   endl;
free(this);
    }
};

int   main()
{
    Obj*   obj   =   (Obj*)malloc(sizeof(Obj));
    require(obj   !=   0);
    obj-> initialize();
    //   ...   sometime   later:
    obj-> destroy();
//     free(obj);
    return   0;
}   ///:~

------解决方案--------------------
this就是对象的指针,在你这里free(this)就和free(obj)一样,不过这样的编程风格很不好
------解决方案--------------------
会释放掉,程序没什么错误。
只是逻辑。。
要申请,释放空间,需要这么绕来绕去么
------解决方案--------------------
这样用是可以的

不过一般不习惯这种用法

不是很规范的程序书写方式
------解决方案--------------------
这样构造函数和析构函数都不会得到调用, 对象的初始化和收尾工作将必须自己完成.

在这里, 你的initialize和destroy就代替了构造函数和析构函数.

你实际上做了本来编译器应该做的工作.
------解决方案--------------------


malloc
free

不会调用构造和析构

所以最好还是用

new
delete
------解决方案--------------------
delete this这是一种技术,在more effective c++里有介绍,一般是用来 "只让对象产生于堆中 "而设计的.详细可以去查看该书