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" );
}
個数とバイトサイズを指定して確保する