C++基础学习笔记(五):堆与栈

2019-04-01  本文已影响0人  于同学的学习空间

写在开头

在最近学习编程时,总是会思考一些细枝末节的问题,这些问题总是会扰乱我的心绪,可能是由于之前没有认真的探究,或者是曾经探究过,但是已经忘掉了,今天一直在脑海里思考的问题是,为什么有的时候需要用new来创建一个对象或数组或结构体呢?当然,不同的老师可能针对这个问题已经提过不止一次了,但是亲身实践才发现,这些细节也足够让人纠结,所以今天就把学到的内容进行一个总结,以备不时之需。

(1)程序内存布局场景下,堆与栈表示的是两种内存管理方式;
(2)数据结构场景下,堆与栈表示两种常用的数据结构。

下面是以前曾经用过的动态申请二维数组的方法作为范例:

    //动态申请一个m行n列的整形数组
    int **p = new int *[m];
    for(int i = 0;i < m; ++i)
        p[i] = new int[n];
    //内存释放
    for(i = 0;i < m; ++i)
        delete[] p[i];
    delete[] p;

事实上,使用C++的STL中vector可以更加方便的完成二维数组的动态申请:

//注意int后面的> >之间要有空格,否则会认为是重载的">>"
vector <vector<int> > p(m,vector<int>(n));
上一篇下一篇

猜你喜欢

热点阅读