《C++ Primer》笔记创建动态数组new,delete

1.每一个程序在执行时都占用一块可用的内存空间,用于存放动态分配的对 象,此内存空间称为程序的自由存储区或堆。C 语言程序使用一对标准库函数 

malloc 和 free 在自由存储区中分配存储空间,而 C++ 语言则使用 new 和 delete 表达式实现相同的功能。 

2.动态数组的定义 

int *pia = new int[10]; // array of 10 uninitialized ints
string *psa = new string[10]; // array of 10 empty strings 
int *pia2 = new int[10] (); // array of 10 uninitialized ints
int *pi = new int;  // pi points to dynamically allocated,
                         // unnamed, uninitialized int

圆括号要求编译器对数组做值初始化,在本例中即把数组元素都设置为 0。

对于动态分配的数组,其元素只能初始化为元素类型的默认值, 而不能像数组变量一样,用初始化列表为数组元素提供各不相 同的初值。 

3.动态空间的释放 

动态分配的内存最后必须进行释放,否则,内存最终将会逐渐耗尽。如果不 再需要使用动态创建的数组,程序员必须显式地将其占用的存储空间返还给程序 的自由存储区。C++ 语言为指针提供 delete [] 表达式释放指针所指向的数组 空间:

          delete [] pia;

该语句回收了 pia 所指向的数组,把相应的内存返还给自由存储区。在关 键字 delete 和指针之间的空方括号对是必不可少的:它告诉编译器该指针指向 的是自由存储区中的数组,而并非单个对象。 

原文地址:https://www.cnblogs.com/worldtraveler/p/2837333.html