Pass by reference

1、生存空间和生存范围

  看下面代码:

vector<int> fibon_seq(int size)
{
    if(size <= 0 || size >= 1024)
    {
        size = 8;
    }
    vector<int> elems(size);
    for(int ix = 0; ix < size; ++ix)
    {
        if( ix == 0 || ix == 1)
            elems[ix] = 1;
        else
            elems[ix] = elems[ix-1] + elems[ix-2];
    }
    return elems;
}

分析:不论以pointer 或reference 形式将elems返回都不正确,因为elems在fibon_seq()方法执行完毕时已不复存在。如果将elems以传值方式返回,便不会存在任何问题;因为返回的是对象的复制品,它在函数之外依然存在。

2、动态内存管理

  动态内存分配来自堆(heap)内存,new and delete

  例如:

int *pi;
pi = new int;


pi = new int(1024);

注意:默认情况下,由heap配置而来的对象,皆未经过初始化。最后一行代码才是经过初始化的。

当用delete 删除内存时,无需检验是否存在内存,如:

int *pia  = new int[24];
if(pia != 0)    //多此一举
    delete [] pia;    

3、使用局部静态对象
  事实上,

原文地址:https://www.cnblogs.com/wiessharling/p/2990207.html