溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

malloc和new及realloc函數分別是什么

發布時間:2021-10-14 09:33:10 來源:億速云 閱讀:161 作者:柒染 欄目:編程語言

這期內容當中小編將會給大家帶來有關malloc和new及realloc函數分別是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1、malloc函數
void *malloc(size_t size); 說明:malloc 向系統申請分配指定size個字節的內存空間。返回類型是 void* 類型。
2、malloc 和 new 至少有兩個不同:
new 返回指定類型的指針,并且可以自動計算所需要大小。比如:   int *p;   p = new int; //返回類型為int* 類型(整數型指針),分配大小為 sizeof(int);
  或:   int* parr;   parr = new int [100]; //返回類型為 int* 類型(整數型指針),分配大小為 sizeof(int) * 100;
而 malloc 則必須要由我們計算字節數,并且在返回后強行轉換為實際類型的指針。
  int* p;   p = (int *) malloc (sizeof(int)*128);//分配128個(可根據實際需要替換該數值)整型存儲單元,并將這128個連續的整型存儲單元的首地址存儲到指針變量p中
  double *pd=(double *) malloc (sizeof(double)*12);//分配12個double型存儲單元,并將首地址存儲到指針變量pd中
除了分配及最后釋放的方法不一樣以外,通過malloc或new得到指針,在其它操作上保持一致。

3、C語言函數realloc
原型:extern void *realloc(void *mem_address, unsigned int newsize);   

語法:指針名=(數據類型*)realloc(要改變內存大小的指針名,新的大?。?。//新的大小一定要大于原來的大小不然的話會導致數據丟失!   

頭文件:#include <stdlib.h> 有些編譯器需要#include <alloc.h>,在TC2.0中可以使用alloc.h頭文件   

功能:先按照newsize指定的大小分配空間,將原有數據從頭到尾拷貝到新分配的內存區域,而后釋放原來mem_address所指內存區域,同時返回新分配的內存區域的首地址。即重新分配存儲器塊的地址。   

返回值:如果重新分配成功則返回指向被分配內存的指針,否則返回空指針NULL?!?   

注意:這里原始內存中的數據還是保持不變的。當內存不再使用時,應使用free()函數將內存塊釋放。

上述就是小編為大家分享的malloc和new及realloc函數分別是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女