/************************ これらは勝手終了時にNEWで確保したものを勝手に開放するサンプルです。 ぶっちゃけこれらのNEWは遅いですTT 下手なif文つかってます。意味無いのに… まぁ、クソ資料ということで眺めてくださいな… */ //***************************** //CLASS_NEW用定義!!!!! //************************* #define CLASS_NEW_ARRAY_NUM 1000//(多いけど… (vectorにすればよかったかも^^; #define CLASS_NEW_USED//CLASS_NEWはつかいます〜〜^^ #ifdef CLASS_NEW_USED //変数 static void *class_new_save[CLASS_NEW_ARRAY_NUM];//配列のポインタは絶対にいれちゃダメ //注意!CLASS_NEWで確保したものはDeleteできません(爆! //なお配列には対応してません!また対応させるとヴぁグリます! inline void* CLASS_NEW_PROTO(unsigned int s){ static int i=0; //秘儀。コンストラクタもどき static void *memsetvp=(memset((void *)class_new_save,NULL,sizeof(class_new_save))); if(CLASS_NEW_ARRAY_NUM <=i){ ODS("もう確保できないっつ〜の!\n"); return NULL; } void *p; p=malloc(s);//::operator new(s, _NORMAL_BLOCK, __FILE__, __LINE__); if(p==NULL)//*うまく確保できてないっツーの! return NULL; class_new_save[i]=p; i++; return p; } inline void CLASS_DELETE_GOODBYE_ALL_HAHAHA(){ void *temp; for(int i=0;i // crtdbg.h をインクルードしたあとに _CRTDBG_MAP_ALLOC を定義してやる // 前でも問題ないけど、それじゃつまらんので(ぉ #define _CRTDBG_MAP_ALLOC void main(){ atexit(CLASS_DELETE_GOODBYE_ALL_HAHAHA); _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); int *p=CLASS_NEW int; *p=1; //CLASS_DELETE_GOODBYE_ALL_HAHAHA(); }