杂七杂八:语言学习篇

int main()
{
    int *p1 = new int;
    int *p2 = new int;
    int *p3 = new int;
    int *p4 = new int;
    int *p5 = new int;

    cout << p1  << p2  << p3  << p4 <<p5 << endl; 
    return 0;
}

约定

    1、作业及时完成。2、50-200 lines codes.

学习方法:

     不懂先用,以后再领会,要会用,理解力达到80%。  


课程体系:

    语言

          C

          C++

    算法

          算法、数据结构

    基础(系统核心(Kernel)编程)

           Linux/Unix                 Windows                          MacOSX

               PC机                    服务器                       ARM

    设备驱动/进程管理/内存管理/文件目录系统管理/IO

               内存管理          

               文件目录

                IO

                进程管理

                       进程创建

                       进程通信

                       进程同步       

                线程管理

                线程同步    

                线程通信

    应用

                网路

                数据库(pro*c/c++)

                UI

                shell


            XML处理

           分布式与中间件(Tuxedo/Corba/MQ)

            web  service     

           OpenGL

    课程定位:提供编程的能力,为设备驱动与Windows应用奠定基础



    内存管理

          硬件层次

                  内存结构管理

          内核层次

                  内存映射

                  堆扩展

          语言层次

                  C:malloc  free    

                  C++:new delete

           数据结构

                   STL(SGI)

                   智能指针

         1、问题:

                 malloc怎么分配空间?

                 malloc与new的关系?

           2、Linux对内存的结构描述

main()

{

    while(1);         /proc/${pid}/      存放进程运行时候所有的信息

}


                   结论:任何程序的内存空间分成4个基本部分:

                  1、代码区            自加载器  /lib/ld-linux.so.2    ./main()

                  2、全局栈区

                  3、堆

                  4、局部栈

    ps   aue

    理解程序的变量与内存空间的关系

    结论:

              1、内存分四个区;

              2、各种变量对应存放区;

              3、堆栈是一种管理内存的数据结构;

              4、查看程序的内存地址。

    理解malloc的工作的原理

               malloc使用一个数据结构(链表)维护分配空间,链表的构成:分配的空间+上一个空间+下一个空间数据+ 本空间的数据等信息,分配的空间不要越界访问,因为容易破坏后台的维护结构。导致malloc/free/calloc/realloc不正常工作

    C++的new与malloc的关系

            malloc               new             new[ ]

            realloc               

            calloc                 new[ ]

            free                  delete               delete[]

    结论:new的实现使用的是malloc来实现的

    区别:new使用malloc后,还要初始化空间。基本类型,直接初始化成默认值。UDT类型调用指定的构造器 new 类型();

                delete调用free实现。

     区别:delete负责调用析构器,然后再调用free。

     new与new[ ]

             new只调用一个构造器初始化。new[ ]循环对每个区域调用析构器

     delete与delete[]       char a[20 ] ;    int *p = new(a)    int;         new(void *)定位分配

         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值