vuejs 可做網(wǎng)站嗎win7優(yōu)化大師官網(wǎng)
1 malloc函數(shù)
函數(shù)說明:
#include <stdlib.h>void *malloc(size_t size);
功能:在內(nèi)存的動態(tài)存儲區(qū)(堆區(qū))中分配一塊長度為size字節(jié)的連續(xù)區(qū)域,用來存放類型說明符指定的類型。分配的內(nèi)存空間內(nèi)容不確定。
參數(shù):size:需要分配內(nèi)存大小(單位:字節(jié))
返回值:成功:分配空間的起始地址失敗:NULL
代碼示例:
#include <stdio.h>
#include <stdlib.h> int main() { // 使用 malloc() 分配內(nèi)存來存儲 5 個整數(shù) int *array = (int *)malloc(5 * sizeof(int)); // 檢查 malloc() 是否成功分配了內(nèi)存 if (array == NULL) { printf("內(nèi)存分配失敗\n"); return -1; // 返回非零值表示錯誤 } // 初始化分配的內(nèi)存中的整數(shù) for (int i = 0; i < 5; i++) { array[i] = i + 1; } // 打印整數(shù)的值 printf("數(shù)組中各元素分別是:\n"); for (int i = 0; i < 5; i++) { printf("%d ", array[i]); } printf("\n"); // 釋放分配的內(nèi)存 free(array); // 嘗試訪問已釋放的內(nèi)存可能會導(dǎo)致問題,所以不再使用 array 指針 // 將指針設(shè)置為 NULL 以避免懸掛指針 array = NULL; return 0;
}
2 calloc函數(shù)
函數(shù)說明:
#include <stdlib.h>void *calloc(size_t num, size_t size);
功能:該函數(shù)與malloc()類似,但它還需要一個額外的參數(shù)來表示要分配的元素數(shù)量。它會返回一個指向已初始化為零的內(nèi)存塊的指針。
參數(shù):num指定要分配的元素數(shù)量。size指定每個元素的大小。
返回值:成功:分配的內(nèi)存塊的指針失敗:NULL
代碼示例:
#include <stdio.h>
#include <stdlib.h> int main() { // 使用 calloc() 分配內(nèi)存來存儲 10 個整數(shù),并初始化為 0 int *array = (int *)calloc(10, sizeof(int)); // 檢查 calloc() 是否成功分配了內(nèi)存 if (array == NULL) { printf("內(nèi)存分配失敗\n"); return -1; } // 給數(shù)組中的每個元素賦一個值 for (int i = 0; i < 10; i++) { array[i] = i * 2; } // 打印數(shù)組中的值 printf("數(shù)組各個元素值分別是:\n"); for (i = 0; i < 10; i++){ printf("%d ", array[i]); } printf("\n"); // 釋放分配的內(nèi)存 free(array); // 將指針設(shè)置為 NULL,避免懸掛指針 array = NULL; return 0;
}
3 realloc()函數(shù)
函數(shù)說明:
#include <stdlib.h>void *realloc(void *ptr, size_t new_size);
功能:用于調(diào)整之前分配的內(nèi)存塊的大小。如果調(diào)整成功,它會返回指向新內(nèi)存塊的指針;如果失敗,它會返回NULL。
參數(shù):ptr:指向一個之前由malloc(), calloc(), 或 realloc() 函數(shù)分配的內(nèi)存塊的指針。如果 ptr 是 NULL,那么 realloc() 的行為就如同 malloc(),分配一塊大小為 new_size 的新內(nèi)存。new_size:重新分配的內(nèi)存塊的大小,以字節(jié)為單位。
返回值:如果內(nèi)存重新分配成功,realloc() 返回指向新內(nèi)存塊的指針。這個指針可能與 ptr 相同(如果重新分配發(fā)生在原地),也可能不同(如果內(nèi)存塊移動了位置)。如果內(nèi)存重新分配失敗,realloc() 返回 NULL,并且原內(nèi)存塊 ptr 保持不變(不會被自動釋放)。
代碼示例:
#include <stdio.h>
#include <stdlib.h> int main() { int *array = (int *)malloc(5 * sizeof(int)); if (array == NULL) { perror("Memory allocation failed"); return 1; } // 初始化數(shù)組 for (int i = 0; i < 5; i++) { array[i] = i; } // 打印原始數(shù)組 printf("Original array:\n"); for (int i = 0; i < 5; i++) { printf("%d ", array[i]); } printf("\n"); // 嘗試將數(shù)組大小增加到10 int *new_array = (int *)realloc(array, 10 * sizeof(int)); if (new_array == NULL) { printf("內(nèi)存重新分配失敗\n"); // 釋放原始內(nèi)存 free(array); return 1; } // 更新指針 array = new_array; // 初始化新分配的內(nèi)存部分 for (int i = 5; i < 10; i++) { array[i] = i; } // 打印新數(shù)組 printf("擴展后的數(shù)組:\n"); for (int i = 0; i < 10; i++) { printf("%d ", array[i]); } printf("\n"); // 釋放內(nèi)存 free(array); // 將指針設(shè)置為 NULL,避免懸掛指針 array = NULL; return 0;
}
4 free函數(shù)
函數(shù)說明:
#include <stdlib.h>
void free(void *ptr);
功能:釋放ptr所指向的一塊內(nèi)存空間,ptr是一個任意類型的指針變量,指向被釋放區(qū)域的首地址。對同一內(nèi)存空間多次釋放會出錯。
參數(shù):ptr:需要釋放空間的首地址,被釋放區(qū)應(yīng)是由malloc函數(shù)所分配的區(qū)域。
返回值:無
代碼示例:
#include <stdlib.h>
#include <stdio.h>int main() {int n = 0;printf("請輸入要申請數(shù)組的個數(shù): ");scanf("%d", &n);// 堆區(qū)申請 n * sizeof(int) 空間,等價int arr[n]int *arr = (int *)malloc(n * sizeof(int));if (arr == NULL) {printf("申請空間失敗!\n");return -1;}for (int i = 0; i < n; i++){// 給數(shù)組賦值arr[i] = i;}for (int i = 0; i < n; i++) {// 輸出數(shù)組每個元素的值printf("%d, ", *(arr+i));}// 釋放堆區(qū)空間free(arr);// 將指針設(shè)置為 NULL,避免懸掛指針 array = NULL; return 0;
}