乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      malloc函數(shù)怎么使用

       啟蒙彩魂 2011-02-15
      函數(shù)聲明(函數(shù)原型):

      void *malloc(int size);

      說明:malloc 向系統(tǒng)申請分配指定size個字節(jié)的內(nèi)存空間。返回類型是 void* 類型。void* 表示未確定類型的指針。C,C++規(guī)定,void* 類型可以強制轉(zhuǎn)換為任何其它類型的指針。
      從函數(shù)聲明上可以看出。malloc 和 new 至少有兩個不同: new 返回指定類型的指針,并且可以自動計算所需要大小。比如:



      int *p;
      p = new int; //返回類型為int* 類型(整數(shù)型指針),分配大小為 sizeof(int);
      或:
      int* parr;
      parr = new int [100]; //返回類型為 int* 類型(整數(shù)型指針),分配大小為 sizeof(int) * 100;

      而 malloc 則必須由我們計算要字節(jié)數(shù),并且在返回后強行轉(zhuǎn)換為實際類型的指針。
      int* p;
      p = (int *) malloc (sizeof(int));

      第一、malloc 函數(shù)返回的是 void * 類型,如果你寫成:p = malloc (sizeof(int)); 則程序無法通過編譯,報錯:“不能將 void* 賦值給 int * 類型變量”。所以必須通過 (int *) 來將強制轉(zhuǎn)換。
      第二、函數(shù)的實參為 sizeof(int) ,用于指明一個整型數(shù)據(jù)需要的大小。如果你寫成:
      int* p = (int *) malloc (1);
      代碼也能通過編譯,但事實上只分配了1個字節(jié)大小的內(nèi)存空間,當你往里頭存入一個整數(shù),就會有3個字節(jié)無家可歸,而直接“住進鄰居家”!造成的結(jié)果是后面的內(nèi)存中原有數(shù)據(jù)內(nèi)容全部被清空。

      malloc 也可以達到 new [] 的效果,申請出一段連續(xù)的內(nèi)存,方法無非是指定你所需要內(nèi)存大小。
      比如想分配100個int類型的空間:
      int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100個整數(shù)的內(nèi)存空間。

      另外有一點不能直接看出的區(qū)別是,malloc 只管分配內(nèi)存,并不能對所得的內(nèi)存進行初始化,所以得到的一片新內(nèi)存中,其值將是隨機的。

       
      除了分配及最后釋放的方法不一樣以外,通過malloc或new得到指針,在其它操作上保持一致。
       
       
      free用法:
      在   malloc   和   free   的面前沒有對象沒有數(shù)組,只有“內(nèi)存塊”。一次   malloc   分配的東西,一次   free   一定能回收。
       

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多