分配(calloc)和馬洛克(malloc)的區別
在編程中,有必要存儲數據。數據存儲在存儲器中。這些內存位置稱為變量。每個變量都有特定的類型。它們可以是整數、浮點、雙精度、字符等。還有一些數據結構可以存儲相同類型元素的固定大小的順序集合。它是一個數組。程序員必須聲明數組大小。如果程序員聲明五個元素的整數數組,則不可能為大於聲明大小的索引賦值。內存分配是固定的,不能在運行時更改。另一種內存分配方法是動態內存分配。動態內存分配有助於在需要時分配更多內存,必要時釋放內存。<;stdlib.h>;頭文件有四個用於動態內存分配的函數。calloc和malloc就是兩個這樣的函數。calloc和malloc之間的關鍵區別在於,calloc分配內存並將分配的內存塊初始化為零,而malloc分配內存,但不會將分配的內存初始化為零。訪問calloc中的內容將得到零,但是malloc將給出一個垃圾值。
目錄
1. 概述和主要區別
2.什麼是calloc
3. 什麼是malloc
4. calloc和malloc的相似性
5. 並列比較——表格形式的calloc與malloc
6. 摘要
什麼是分配(calloc)?
內存分配是為正在執行的程序分配內存的過程。有時需要改變內存的大小。因此,使用動態內存分配。它是用指針完成的。指針是保存另一個變量地址的引用變量。
calloc代表“連續分配”。它分配相同大小的多個內存塊。calloc的語法如下。需要兩個參數。它們是塊的數量和每個塊的大小。函數calloc返回一個空指針,因此使用cast運算符根據所需的數據類型返回指針類型。
void*calloc(大小數字,大小大小大小);
參考下面的簡單C程序。
#包括
#包括
內部主(){
int ptr*=(int*)calloc(20,sizeof(int));
如果(ptr==NULL){
printf(“內存未分配”);
}
其他{
printf(“內存已分配”);
}
返回0;
}
根據上述程序,分配可容納20個元素的連續存儲器塊。每個都有整數大小。使用sizeof(int)是因為整型因編譯器而異。
如果內存分配成功,它將返回內存塊的基址。這意味著指針ptr現在指向該內存塊的基址。所有分配的區域都初始化為零。它將打印內存分配消息。如果內存分配不成功,它將返回空指針。因此,它會打印內存未分配的消息。
什麼是馬洛克(malloc)?
malloc函數用於在內存中分配所需的字節量。malloc的語法如下。大小表示所需的內存(以字節為單位)。
void*malloc(大小);
函數malloc返回一個空指針,因此使用cast運算符根據所需的數據類型返回指針類型。
參考下面的帶有malloc函數的簡單C程序。
#包括
#包括
內部主(){
int ptr*=(int*)malloc(10*sizeof(int));
如果(ptr==NULL){
printf(“內存未分配”);
}
其他{
printf(“內存已分配”);
}
返回0;
}
根據上述程序,將分配內存塊。指針指向已分配內存的起始地址。返回的指針被轉換為整數類型。如果內存已分配,它將打印內存已分配消息。如果沒有分配內存,則返回空指針。因此,內存未分配消息將被打印。
分配(calloc)和馬洛克(malloc)的共同點
- 這兩個函數都在頭文件<stdio.h>中聲明。它是標準庫頭文件。
- 這兩個函數都用於動態內存分配。
- calloc和malloc返回的指針應強制轉換為特定類型。
- 在成功的內存分配中,這兩個函數都將返回一個帶有內存塊基址的指針。
- 如果內存分配不成功,將返回空指針。
分配(calloc)和馬洛克(malloc)的區別
卡洛克vs馬洛克 | |
calloc是C語言stdlib.h頭文件中用於動態內存分配的函數,它分配特定數量的字節並將其初始化為零。 | malloc是C語言stdlib.h頭文件中用於動態內存分配的函數,它分配特定數量的字節。 |
意義 | |
calloc代表連續分配。 | malloc代表內存分配。 |
語法 | |
calloc的語法類似於void*calloc(size\u tu num,size\t size); | malloc的語法類似於void*malloc(size_t_size);。 |
參數個數 | |
calloc接受兩個參數。它們是一些塊和每個塊的大小。 | malloc接受一個論點。它是一個字節數。 |
速度 | |
calloc比malloc花費的時間稍長。這是因為額外的一步是將分配的內存初始化為零。 | malloc比calloc快。 |
總結 - 分配(calloc) vs. 馬洛克(malloc)
在使用數組的靜態內存分配中,內存是固定的。如果存儲的元素很少,那麼剩餘的內存將被浪費。當分配的內存小於所需內存時,也可能導致錯誤。因此,使用動態內存分配。在C語言中,calloc和malloc提供了動態內存分配。calloc和malloc的區別在於,calloc分配內存並將分配的內存塊初始化為零,而malloc分配內存但不將內存塊初始化為零。Malloc接受兩個參數,而calloc接受兩個參數。
下載calloc vs malloc的pdf文件
你可以下載這篇文章的PDF版本,並根據引文說明離線使用。請在這裡下載與malloc版本之間的差異