C和指標之動態記憶體分配之(編寫calloc函式,函式內部使用malloc函式來獲取記憶體)
阿新 • • 發佈:2019-01-03
1、問題
編寫calloc函式,函式內部使用malloc函式來獲取記憶體
2、程式碼實現
#include <stdio.h> #include <stdlib.h> void *my_calloc(size_t nums, size_t element_size) { int i, all_size; all_size = nums * element_size; char *p = NULL; p = malloc(all_size); if (p == NULL) return NULL; for (i = 0; i < all_size; ++i) p[i] = 0; return p; } int main() { char *p = my_calloc(10, sizeof(char)); if (p != NULL) { for (int i = 0; i < 10; ++i) { printf("p[%d] is %d\n", i, p[i]); } free(p); } int *p_int = my_calloc(10, sizeof(int)); if (p_int != NULL) { for (int i = 0; i < 10; ++i) { printf("p_int[%d] is %d\n", i, p_int[i]); } free(p_int); } return 0; }
3、執行結果
1111deMacBook-Pro:malloc a1111$ vim calloc.c 1111deMacBook-Pro:malloc a1111$ gcc -g calloc.c -o calloc 1111deMacBook-Pro:malloc a1111$ ./calloc p[0] is 0 p[1] is 0 p[2] is 0 p[3] is 0 p[4] is 0 p[5] is 0 p[6] is 0 p[7] is 0 p[8] is 0 p[9] is 0 p_int[0] is 0 p_int[1] is 0 p_int[2] is 0 p_int[3] is 0 p_int[4] is 0 p_int[5] is 0 p_int[6] is 0 p_int[7] is 0 p_int[8] is 0 p_int[9] is 0