calloc和非连续的内存块和void指针

时间:2015-10-21 10:57:55

标签: c dynamic-allocation dma calloc

calloc函数用于保留内存并给出内存块的起始地址,但据说它可能不会在连续的地址空间中分配,而是我分配不同的不同的非连续块但是起始地址我们得到calloc的返回值将只指向起始地址的连续内存然后如果内存分配了两个内存块,那么当一个连续的块被占用时,指针将如何跳转到其他内存块

void * calloc (size_t n, size_t size)

2 个答案:

答案 0 :(得分:2)

  

但据说它可能不会在连续的地址空间中分配

这是什么"说"以及上下文是什么?

calloc()返回指向大小为nelem * size的连续块(​​在虚拟地址空间中)的指针。

连续拨打calloc()不会给你相邻的块(一般情况下)。

答案 1 :(得分:0)

你在哪里读到:

  

我分配不同的不同的非连续块,但是起始地址>我们得到   因为calloc的返回值只会指向连续的内存   起始地址

C库函数void *calloc(size_t nitems, size_t size)分配请求的内存并返回指向它的指针。 malloc calloc 的区别在于malloc未将内存设置为零,而calloc设置为分配内存为零。

http://en.cppreference.com/w/c/memory/calloc