2012-05-18 3 views
0

Предоставляет ли calloc выделение возвратной непрерывной памяти? Если да, что бы он сделал, если он недоступен?Calloc - выделение памяти

+0

Вы имеете в виду один вызов calloc или несколько вызовов calloc, возвращающих указатели туда, где закончился ранее выделенный блок? – Jens

ответ

3

Вызывает ли calloc allocate непрерывное расположение памяти?

Да.

Что делать, если он недоступен?

NULL.

См. Раздел 7.20.3.1 стандарта C99.


1. Насколько программа C обеспокоен. В виртуальной системе памяти используемая физическая память не может быть смежной.

+0

Итак, все памяти blkocks, возвращаемые calloc, хранятся смежно? – zahreelay

+1

@zahreelay: Если память в каждом распределении не была смежной, это было бы не очень полезно. –

+0

Нет, если вы имеете в виду разные вызовы calloc, это не гарантируется. – Jens

1

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