动态数组

来源:互联网 发布:java常用中间件 doubo 编辑:程序博客网 时间:2024/04/29 10:01
  每一个程序在执行时都占用一块可用的内存空间,用于存放动态分配的对象,此内存空间称为程序的自由存储区或堆。C语言程序使用一对标准库函数malloc和free在自由存储区中分配存储空间,而C++语言则使用new和delete表达式实现相同的功能。
1.动态数组的定义
静态数组是在定义是就已经在栈上分配了空间大小,在运行时这个大小不能改变,如:int a[10];动态数组的大小是在运行是给定,即,运行时在堆上分配一定的存储空间,同时运行时还可以改变其大小,如:int *a;                                或者                    int *a = new int[10];a = new int[10];
2.初始化
如果数组元素具有类类型,将使用该类的默认构造函数实现初始化。   string *psa = new string[10];
如果数组元素是内置类型,则无初始化。   int *pia = new int[10];
可使用跟在数组长度后面的一对空圆括号,对数组元素做值初始化。  int *pia = new int[10] ();
注:对于动态分配的数组,其元素只能初始化为元素类型的默认值,而不能像数组变量一样,用初始化列表为数组元素提供各不相同的初值。
3.const对象的动态数组
内置类型的const对象,则必须为这个数组提供初始化。
const int *pci = new const int[100];    //正确
const int *pci = new const int[100]();  //错误
4.动态空间的释放
动态分配的内存最后必须进行释放,否则,内存最终将会逐渐耗尽。C++语言为指针提供delete [ ] 表达式释放指针所指向的数组空间。
delete [ ] pia;               空方括号是必不可少
头文件:stdlib.h 和 malloc.h
void free(void *memblock)         释放内存区块
void *malloc(size_t size)            获取内存区块
例:void main() {
    long *buffer;
    buffer = (long *)malloc(400);
    free(buffer);}
分配size字节长度的内存块,如果分配成功,则返回指向被分配的内存指针,否则返回空指针NULL;当内存不再使用时,应使用free()函数将内存块释放。

0 0
原创粉丝点击