calloc関数は、大きさがsizeであるオブジェクトのnmemb個の配列の領域を割りあて
確保した先頭のメモリのポインタを返却
#include <stdio.h> #include <stdlib.h> void memdump(void *p); int main(int argc, char*argv[]){ void *p = NULL; p = calloc((size_t)10, (size_t)32); if(p == NULL) { fprintf(stdout, "calloc 10 * 32 byte error!\n"); return -1; } memdump(p); free(p); p = calloc((size_t)10, (size_t)32*1024); if(p == NULL) { fprintf(stdout, "calloc 10 * 32kbyte error!\n"); return -1; } memdump(p); free(p); p = calloc((size_t)10, (size_t)32*1024*1024); if(p == NULL) { fprintf(stdout, "calloc 10 * 32Mbyte error!\n"); return -1; } memdump(p); free(p); } void memdump(void *p){ fprintf(stdout, "==== memdump start ====\n"); unsigned char *cp = NULL; int i = 0; for(cp = (char*)p, i = 0; i < 4; cp++, i++){ fprintf(stdout, "cp[%p]:%02x\n", cp, *cp); } fprintf( stdout, "==== memdump end ====\n\n" ); }
個数とバイトサイズを指定して確保する