本文共 2323 字,大约阅读时间需要 7 分钟。
????????????????????????C++??new?delete???????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????Allocator???????????????????????????operator new?operator delete????????????????????
#include#if defined(USE_DL_MALLOC) extern "C" void * dlmalloc(size_t); extern "C" void dlfree(void *);#else #define MALLOC malloc #define FREE free#endifstruct Allocator { static void* operator new(size_t space_length) { printf("acquire %u space\n", space_length); return MALLOC(space_length); } static void operator delete(void* space_pointer, size_t space_length) { printf("release %u space %p\n", space_length, space_pointer); FREE(space_pointer); } static void* operator new[](size_t space_length) { printf("acquire %u array\n", space_length); return MALLOC(space_length); } static void operator delete[](void* space_pointer, size_t space_length) { printf("release %u array %p\n", space_length, space_pointer); FREE(space_pointer); }};
??????????????Matrix_1x4???????Allocator?????4????????????????Matrix_4x4??????4x4?????????
struct Matrix_1x4 : public Allocator { int X01, X02, X03, X04;};struct Matrix_4x4 : public Matrix_1x4 { int X11, X12, X13, X14; int X21, X22, X23, X24; int X31, X32, X33, X34;};struct Matrix_1x3 { int X01, X02, X03;};struct Matrix_3x3 : public Matrix_1x3, public Allocator { int X11, X12, X13; int X21, X22, X23;}; ???????????????????????3x3??????????????????
int main(int argc, char* argv[]) { Matrix_1x4* pArray1 = new Matrix_1x4[2]; Matrix_4x4* pArray2 = new Matrix_4x4[2]; Matrix_1x3* pArray3 = new Matrix_1x3[2]; Matrix_3x3* pArray4 = new Matrix_3x3[2]; delete[] pArray1; delete[] pArray2; delete[] pArray3; delete[] pArray4; Matrix_1x4* pMatrix1 = new Matrix_1x4; Matrix_4x4* pMatrix2 = new Matrix_4x4; Matrix_1x3* pMatrix3 = new Matrix_1x3; Matrix_3x3* pMatrix4 = new Matrix_3x3; delete pMatrix1; delete pMatrix2; delete pMatrix3; delete pMatrix4;} ???????????????????????????????????????????????????????????????????????????malloc?free???????????????????
???????dlmalloc?????????????????USE_DL_MALLOC????????????????????
转载地址:http://jipfk.baihongyu.com/