博客
关于我
operator new 与 operator delete
阅读量:793 次
发布时间:2023-02-24

本文共 2323 字,大约阅读时间需要 7 分钟。

C++??????????????????

????????????????????????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/

你可能感兴趣的文章
Objective-C实现最长子数组算法(附完整源码)
查看>>
Objective-C实现根据cpu和磁盘序列号生成注册码( 附完整源码)
查看>>
Objective-C实现移位密码加解密(附完整源码)
查看>>
Objective-C实现维吉尼亚密码加解密算法(附完整源码)
查看>>
Objective-C实现莱布尼兹级数求解π的近似值(附完整源码)
查看>>
Objective-C实现获取 Collatz 序列长度算法(附完整源码)
查看>>
Objective-C实现获取CPU温度(附完整源码)
查看>>
Objective-C实现获取文件头的50个字符(附完整源码)
查看>>
Objective-C实现获取本机ip及mac地址(附完整源码)
查看>>
Objective-C实现获取本机系统版本(附完整源码)
查看>>
Objective-C实现随机图生成器算法(附完整源码)
查看>>
Objective-C实现高斯消元法(附完整源码)
查看>>
OfficeWeb365 SaveDraw 文件上传漏洞复现
查看>>
office中的所有content type
查看>>
Oil Deposits
查看>>
OJ中处理超大数据的方法
查看>>
OJ中常见的一种presentation error解决方法
查看>>
OK335xS UART device registe hacking
查看>>
ok6410内存初始化
查看>>
Okhttp3添加拦截器后,报错,java.io.IOException: unexpected end of stream on okhttp3.Address
查看>>