zoukankan      html  css  js  c++  java
  • C++ 函数返回数组指针的问题

    提醒一下:
    int *func()
    {
    int a[10] = {5};
    return a;
    }
    是非法的,因为 a 是局部变量,被申请在系统栈中,局部变量在函数返回后会被销毁,于是你返回的指针指向的是一段已经被系统回收的内存,这样的访问是非法的。
    int *func()
    {
    int *a = new int[10];
    a[0] = 5;
    return a;
    }
    是合法的,通过new运算符申请的一段内存是在系统堆上的,其销毁不受系统控制,而由程序员控制,所以如果在外部有int *ret = func(),将 ret 使用完毕后需及时 delete ret;,否则可能造成内存泄露。

    fabonacci.cpp

    #include <iostream>
    
    using namespace std;
    
    int *fabonacci(int n)
    {
        if(30 >= n > 0)
        {
            int *array = new int[n];
            switch(n)
            {
                case 1:
                {
                    array[0] = 1;
                    cout << array[0] << endl;
                    break;
                }
                case 2:
                {
                    array[0] = 1;
                    array[1] = 1;
                    cout << array[0] << endl;
                    cout << array[1] << endl;
                    break;
                }
                default:
                {
                    array[0] = 1;
                    array[1] = 1;
                    cout << array[0] << endl;
                    cout << array[1] << endl;
                    for(int i = 2; i < n; i++)
                    {
                        array[i] = array[i - 1] + array[i - 2];
                        cout << array[i] << endl;
                    }
                }
            }
            return array;
        }
        else
        {
            cout << "Error!
    N is out of range!
    It must be valued from 1 to 30!
    " << endl;
            return NULL;
        }
    }
    
    
    int main()
    {
        int *p = fabonacci(10);
        if(p != NULL)
        {
            int n = 5;
            cout << "*(p + " << n << ") = " << *(p + n) << endl;
        }
        delete(p);
        return 0;
    }

    1

  • 相关阅读:
    网页字体大小控制
    表格文本框搜索匹配
    表格展开和关闭
    表格复选框控制行高亮
    jquery表单验证
    文本框变大变小效果--jQuery
    滚动条高度变化jQuery
    点击标题显示隐藏效果--jQuery
    jQuery练习2-1
    jQuery练习2
  • 原文地址:https://www.cnblogs.com/blog-3123958139/p/5582625.html
Copyright © 2011-2022 走看看