2015-10-21 4 views
-3

функция calloc, используемая для резервирования памяти и задающая начальный адрес блока памяти, но сказано, что она не может выделяться в смежном адресном пространстве, и, скорее, она выделяет разные разные непересекающиеся блоки, но начинает адрес, который мы получаем в качестве возвращаемого значения calloc будет указывать только непрерывной памяти с начальным адресом, то если память выделяется два блока памяти, то как указатель будет переход к другому блоку памяти, когда один непрерывный блок будет занятcalloc и непересекающиеся блоки памяти и указатель void

void * calloc (size_t n, size_t size) 
+1

Вы говорите о виртуальной или физической памяти? Если вы выделяете> размер страницы в памяти, физическая память может быть не слишком условной. – Downvoter

+2

Пунктуация была изобретена не зря. И откуда вы узнали, что 'calloc' не выделяет замкнутую память? – Downvoter

+0

Я думаю, что это «как работает виртуальная память?». –

ответ

0

Где вы прочитали это:

это мое выделить различные различные удобства смежных блоков, но начальный адрес> мы получаем в качестве возвращаемого значения calloc только точка непрерывной памяти от начального адреса

Функция void *calloc(size_t nitems, size_t size) C библиотеки распределяет запрашиваемую память и возвращает указатель к нему. Разница в malloc и calloc заключается в том, что malloc не устанавливает память в ноль, где calloc устанавливает выделенную память на ноль.

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

3

, но он сказал, что он не может выделять в пределах адресного пространства

Где это «сказал», а что контекст?

calloc() возвращает указатель на непрерывный блок (в виртуальном адресном пространстве) размером nelem * size.

Последовательные звонки calloc() не дают смежных блоков (в общем).

+0

эй, поиск в интернете, вы обнаружите, что calloc дает непересекающиеся блоки памяти, и для этого он использует связанный список, и здесь я говорю только о логическом адресе (calloc будет назначать блоки непересекающегося логического адреса. –

+0

Перейти на сайт, указанный ниже и видеть себя в стороне, указано, что calloc может или не может давать соседние местоположения ..... http://r4r.co.in/answer/index.php?id=22&option=C%20SUB –

+0

здесь другой, где упоминается, что может быть или не быть непрерывным http://www.cprogrammingexpert.com/C/Tutorial/dynamic_memmory_allocation/calloc.aspx –