实验十六 动态内存分配与深复制

 一、 实验目的

1. 理解运行时内存分配的概念,掌握自由存储区内存动态分配的方法。

2. 理解内部包含为指针动态分配内存的类对象复制时的浅复制和深复制的概念,会编写深复制构造函数和赋值复制运算符。

二、 实验内容

1. 编程: 仿照标准字符串类string ,采用动态字符数组来改造主教材5.6.3节中的自定义字符串类,要求可自动适应不同的串长度。

【提示】 新的自定义字符串类mysring 如下:

 

请读者完成各函数的定义,并测试。

【分析】

本题的难点是判断串长是否超出串的最大允许长度,以及怎样重新分配字符数组,并保留原来的字符数组。

2.将实验十五改为动态内存分配,依然用实验十五测试代码进行测试,模板声明如下  

 

 3. 附加题: 从程序运行效率的角度,尝试改进第二题的设计和代码,提示,考虑如下代码内存释放和分配的频率: myVector<int> vi; vi.push_back(0); vi.push_back(0);

vi.push_back(0);