malloc (size)//申請長度為size的動态記憶體空間
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#pragma warning(disable:4996)
int main(){
int num = 0;
scanf("%d", &num);
int *ptr = NULL;
ptr = (int*)malloc(num*sizeof(int));//開辟動态空間
if (NULL != ptr){//判斷開辟動态空間是否成功
//if語句内是使用動态記憶體的操作
//int i = 0;
//for (i = 0; i < num; i++){
// *(ptr + i) = 0;//賦零操作
//
//}
}
free(ptr);//釋放掉動态記憶體,防止發生記憶體洩漏
ptr = NULL; //使野指針不開懸垂,有效避免錯誤
system("pause");
return 0;
}
calloc (num,size)//為num個大小為size的元素開辟一個空間,并将記憶體的所有位元組預設置零
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#pragma warning(disable:4996)
int main(){
int *p = calloc(10, sizeof(int));//calloc申請的動态記憶體空間會預設 //将空間内的所有位元組初始化為0
if (NULL != p){
//使用空間
}
free(p);//釋放動态記憶體空間
p = NULL;//是指針不再懸垂
system("pause");
return 0;
}
realloc //對動态開辟得記憶體大小進行調整,使得動态記憶體管理更加靈活
realloc(ptr,size)//将記憶體位址為*ptr的記憶體進行調整,調整後的新大小為size
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#pragma warning(disable:4996)
int main(){
int *ptr = malloc(100);
if (ptr != NULL){
//當記憶體開辟成功時,進行使用
}
else{
exit(EXIT_FAILURE);//報錯,使用的是C語言中預設的函數
}
//擴充容量
int*p = NULL;
p = realloc(ptr, 1000);
if (p != NULL){
ptr = p;//擴充完空間後,将ptr指向新的空間
}
free(p);//釋放動态記憶體
system("pause");
return 0;
}