TreeMind树图在线AI思维导图
当前位置:树图思维导图模板资格考试计算机2020年全国计算机二级C++复习知识点:重载new[]和delete[]思维导图

2020年全国计算机二级C++复习知识点:重载new[]和delete[]思维导图

  收藏
  分享
免费下载
免费使用文件
微风不燥 浏览量:02023-04-10 17:02:08
已被使用0次
查看详情2020年全国计算机二级C++复习知识点:重载new[]和delete[]思维导图

备考2020年全国计算机二级考试的小伙伴们,复习的都怎么样了呢?树图网小编整理了2020年全国计算机二级C++复习知识点供大家参考复习,小伙伴们快来看看,测试一下自己吧!了解更多全国计算机二级考试敬请关注树图网计算机二级频道。

树图思维导图提供 2020年全国计算机二级C++复习知识点:重载new[]和delete[] 在线思维导图免费制作,点击“编辑”按钮,可对 2020年全国计算机二级C++复习知识点:重载new[]和delete[]  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:3227803d073a1a5662bbe5e67fff2cab

思维导图大纲

2020年全国计算机二级C++复习知识点:重载new[]和delete[]思维导图模板大纲

2020年全国计算机二级C++复习知识点:重载new[]和delete[]

对于上面的程序,假如有下面的语句:

Names *nms=new Names[10]

...

delete [] nms;

那么,这些语句会调用全局new和delete运算符,而不是重载过的new和delete。为了重载能为对象数组分配内存的new和delete运算符,必须像下面的程序一样,对new[]和delete[]也进行重载。

#include iostream.h

#include string.h

#include stddef.h

#include new.h

const int maxnames = 5;

class Names

char name[25];

static char Names::pool[];

static bool Names::inuse[maxnames];

public:

Names(char* s) { strncpy(name,s,sizeof(name)); }

void* operator new(size_t) throw(bad_alloc);

void operator delete(void*) throw();

void display() const { cout < };

char Names::pool[maxnames * sizeof(Names)];

bool Names::inuse[maxnames];

void* Names::operator new[](size_t size) throw(bad_alloc)

int elements=size/sizeof(Names);

int p=-1;

int i=0;

while((i {

if(!inuse[i]) p=i;

++i;

// Not enough room.

if ((p==-1) || ((maxnames-p) for(int x=0; x return pool+p*sizeof(Names);

void Names::operator delete[](void* b) throw()

if(b!=0)

int p=((char*)b- pool)/sizeof(Names);

int elements=inuse[p];

for (int i=0; i }

int main()

Names* np = new Names[maxnames];

int i;

for(i=0; i {

cout < char name[25];

cin >> name;

*(np + i) = name;

for(i=0; idisplay();

delete [] np;

return 0;

重载new[]和delete[]要比重载new和delete考虑更多的问题。这是因为new[]运算符时为数组分配内存,所以它必须记住数组的大小,重载的delete[]运算符才能正确地把缓冲区释放回内存池。上面的程序采用的方法比较简单,吧原来存放缓冲区使用标志的布尔型数组换成一个整型数组,该数组的每个元素记录new[]运算符分配的缓冲区个数,而不再是一个简单的true。当delete[]运算符函数需要把缓冲区释放回内存池时,它就会用该数组来确认释放的缓冲区个数。

相关思维导图模板

流程图表示思维导图

树图思维导图提供 流程图表示 在线思维导图免费制作,点击“编辑”按钮,可对 流程图表示  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:5948c35cf208112e2ca32158796e1b7e

思维导图思维导图

树图思维导图提供 思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 思维导图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:bcea44ba49b736a7526246a1cbf17a43