C++ 内存分配和指针

C++内存分配

===================================

        静态分配: 编译器在处理程序源代码时分配。

                      在程序执行前分配,因此效率比较高。

                      但是它要求在程序执行之前就知道所需内存的类型和数量,因此缺少灵活性。

             如:

                  int ival = 1024; //指示编译器分配足够的存储区以存放一个整型值,

                                      //该存储区与名字ival相关。并用数值1024来初始化该存储区。

        动态分配: 程序执行时调用运行时刻库函数来分配。

                       有两个值与一个对象相关:一个是它包含的值,另一个是存放这个值的存储区的地址。

                       C++支持用指针类型来存放对象的内存地址值。

               如:    int *pint; //声明一个指向int类型的指针

                        pint = &ival; //取地址操作符(&)用于对象前时,返回的是对象的地址值

 

                       *pint = *pint + 1; //解引用操作符(*)用于指针前时,返回的是指针所指的对象

              等价于 ival = ival + 1;

         在C++中指针的主要作用是管理和操纵动态分配的内存。

        静态与动态内存分配的两个主要区别是

                1. 静态对象是有名字的变量,我们直接对其进行操作。而动态对象是没有名字的变量,我们通过指针间接对其进行操作。

                2. 静态对象的分配和释放由编译器自动处理。而动态对象的分配与释放,必须由程序员显式的管理。它是由new和delete两个表达式来完成。

                       int *pint = new int(1024); //分配int类型的对象,对象初始值为1024

                       int *pia = new int[4]; //分配特定类型和维数的数组,pia拥有四元素数组的第一个元素的地址。

                       delete pint; //删除单个对象

                       delete [] pia; //删除一个数组对象

 

详细:http://www.cnblogs.com/daban/archive/2012/05/28/2521358.html

posted @ 2013-02-09 22:17  stma  阅读(514)  评论(0)    收藏  举报