### 在堆中分配和释放数组

在开发应用程序时，如果需要在数组中存储大量数据，通常在堆中为数组分配空间，然后在数组使用后释放堆空间。这是因为栈空间时有限的。通常，Visual C++提供的栈大小为 1MB，如果我们在栈中定义一个较大的数组，将会出现栈溢出的错误。例如：

char szText[1024][2048];

程序在运行时会弹出栈溢出信息，如图 1 所示。

图 1 错误对话框

如果我们在堆中为其分配空间，则不会出现上述错误。因为堆空间通常时非常大的，它只与系统的物理内存和虚拟内存有关。例如：

char *szText = new char[1024*1024];

但是，在对中分配空间有一个缺点，就是系统不能够自动释放堆空间，我们必须通过代码释放堆空间，否则就是出现内存泄露。通常，我们使用 new 在堆中开辟空间，使用 delete 释放堆空间。例如：

delete [] szText; //释放堆空间