zoukankan      html  css  js  c++  java
  • 指针数组malloc和new的区别Strut2教程java教程

    新手发帖,很多方面都是刚入门,有误错的地方请大家见谅,欢迎批评指正

        

    Malloc:

        

    Malloc 向系统请申分配指定size个节字的存内间空.返回类型是 void* 类型.void* 示表未确定类型的指针.C,C++划定,void* 类型可以强制转换为任何其它类型的指针.

        


        

    型原:extern void *malloc(unsigned int num_bytes);
    头文件:malloc.h或者stdlib.h、cstdlib。
    功能:分配长度为num_bytes节字的存内块,一般会用到sizeof
    返回值:分配功成则返回指向被分配存内的指针(此存储区中的初始值不确定,一般会用到指针强制转换),否则返回空指针NULL。

        

    注意:定一要和free()合结应用。例如free(p);

        


        

    new:
        每日一道理
    如果说生命是一座庄严的城堡,如果说生命是一株苍茂的大树,如果说生命是一只飞翔的海鸟。那么,信念就是那穹顶的梁柱,就是那深扎的树根,就是那扇动的翅膀。没有信念,生命的动力便荡然无存;没有信念,生命的美丽便杳然西去。(划线处可以换其他词语)

        

    malloc与free是C++/C语言的标准库数函,new/delete是C++的运算符。它们都可于用请申态动存内和释放存内。
    new可以认为是malloc加构造数函的执行。new出来的指针是直接带类型息信的。而malloc返回的都是void指针。

    int *p=new int;
    int *p=new int [10]; //态动数组的小大可是以量变或常量;而一般直接声明数组时,数组小大必须是常量
    int *p1;
    p1=new int(12);  //别分示表态动分配了于用放存整型数据的存内间空,将初值12写入该存内间空,并将首地址值返回指针p1;
    注意:括号相当于赋初值,如果括号里头为空,那就赋初值为空

    态动分配维二数组:
    int **p=new int* [row]; //row是维二数组的行,p是指向一个指针数组的指针
    for(int i=0; i<row; i++)
    p[i]=new int [col]; //col是维二数组的列,p是指向一个int数组的指针
    删除这个维二数组:
    for(int i = 0; i < row;i++)
    delete []p[i]; //先删除维二数组的列
    delete []p;

    注意一:义定指针其实不代表着就请申了存内,指针义定后以最好紧接着就请申存内,否则可能会现出段误错
    注意二:delete指针实际上是让编译器释放存内,但指针本身仍然存在,这时他就是一个途迷指针(或叫悬浮指针)途迷指针要置空为NULL,或者最好别应用,应用后可能会形成意想不到的误错!!

    总之:
    new 是个操作符,和什么"+","-","="...有一样的位地.
    malloc是个分配存内的数函,供你调用的.
    new是保留字,不须要头文件持支.
    malloc须要头文件库数函持支.
    new 建立的是一个对象,
    malloc分配的是一块存内.
    new建立的对象你可以把它当做一个通普的对象,用成员数函拜访,不要直接拜访它的地址间空
    malloc分配的是一块存内区域,就用指针拜访好了,而且还可以在里头挪动指针.

        

    -------------------------------------------------------------------------------------------------------

        

    关于new的一个源资泄漏的例子:

        

    char *p2=new char;
     p2="adfad";
     cout<<p2<<endl;     //这里会输出字符串p:adfad,而不是地址
     cout<<*p2<<endl;   //这里会输出*p2:a,字符串第一个字符
     //delete p2;                //如果delete,会段误错报错,源资泄漏

    a只是个指针而以,它可以指向一个字符,也可以指向一个字符串。在第5行的时候,a指向的是一个一节字的char,但是在第6行的时候,a已指向"abcde"了。所以输出的时候,就是"abcde"了。所以这个例子是一个典行的源资泄漏的例子。因为new char了,确没有应用,并由于a在后以已不指向这个字符的间空,使之后以都没有机遇再被释放掉了,所以这1bit间空就源资泄漏了。

        


    文章结束给大家分享下程序员的一些笑话语录: IBM和波音777
      波音777是有史以来第一架完全在电脑虚拟现实中设计制造的飞机,所用的设备完全由IBM公司所提供。试飞前,波音公司的总裁非常热情的邀请IBM的技术主管去参加试飞,可那位主管却说道:“啊,非常荣幸,可惜那天是我妻子的生日,So..”..
      波音公司的总载一听就生气了:“胆小鬼,我还没告诉你试飞的日期呢!”

  • 相关阅读:
    xutils 上传文件 ,暂时
    UIView.FRAMEWORK
    2016.11.7
    2016.11.6新阶段开始
    远程推送
    xcode8 导入 dylib
    bugly使用
    anelife
    心阶段
    新阶段
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3053836.html
Copyright © 2011-2022 走看看