实现动态内存管理有两种方式:
填表式:每次分配的时候记录起始地址和大小,释放时候查询表完成,这种方式用户无法知道大小。
Cookie式:每次分配动态动态数组起始地址之前记录动态数组的大小,VC中用这种方式实现。VC中可用如下方法获得动态数组大小:
int *p=new int[10];
int size=*(p-4);
cout<<"数组长度"<<size<<endl;//这里输出40
cout<<"数组元素个数"<<size/(sizeof(int))<<endl;//这里为显示共40/4=10个元素。