关于“最袖珍的垃圾回收器”的实现(使用)

 

 

 

建立静态库工程,将 前面发布的 头文件及C文件, 打包成静态库 TRSimpleGC.lib

实际上前面的代码是和平台无关的,如果要在其他平台下编译,只要单独编译C文件,

并用相应的AR打包器打包成静态库即可。

为方便我们以WIN平台为例子,使用方法也很简单,代码如下

后面我将再章节,我讲再讲讲,这个简单,而又神奇的GC的实现

以及它的问题,以帮助理解及深入的研究

//  TestGC.cpp : Defines the entry point for the console application.
//
 
#include 
" stdafx.h "
#include 
" TestGC.h "
 
#ifdef _DEBUG
#define  new DEBUG_NEW
#undef  THIS_FILE
static   char  THIS_FILE[]  =  __FILE__;
#endif
 
/////
//  The one and only application object
 
CWinApp theApp;
 
using   namespace  std;
 
extern   " C "   void   *  gc_malloc(UINT32 cb);
extern   " C "   void  gc_free();
 
 
int  _tmain( int  argc, TCHAR *  argv[], TCHAR *  envp[])
{
       
int nRetCode = 0;
 
       
// initialize MFC and print and error on failure
       if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
       
{
              
// TODO: change error code to suit your needs
              cerr << _T("Fatal Error: MFC initialization failed"<< endl;
              nRetCode 
= 1;
       }

       
else
       
{
              
// TODO: code your application's behavior here.
 
              
// 不用初始化,第一次使用的时候就算初始化了
              char *pTest1 = (char *)gc_malloc(38);
              sprintf(pTest1,
"sadfasdfsdf");
 
              cout 
<< "asdfasdfasdf" << endl;
 
              
char *pTest2 = (char *)gc_malloc(13413);
              memset(pTest2,
0,123);
 
              cout 
<< "print some thing" << endl;
 
              
// 因为是半自动的GC,所以最后在程序逻辑的周期需要手工调用free
              gc_free();
       }

 
       
return nRetCode;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值