alloc, malloc и alloca - какая разница?

У меня сложилось впечатление, что alloc в Objective-C (когда мы вызываем [anyObject alloc] фактически реализует функцию C malloc и память выделяется в куче, но не может найти где-нибудь ответ за это.

Кроме того, при поиске alloc я обнаружил alloca, который выделяет память в стеке. Если я не ошибаюсь, alloc выделяет память в куче для создания объектов.

Итак, в чем разница между alloc и mallocalloca)? Кто-нибудь может подвести итоги?

12 голосов | спросил Anindya Sengupta 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 21 Sep 2015 03:50:39 +0300 2015, 03:50:39

2 ответа


0

alloc() не является стандартной библиотечной функцией C. Некоторые старые компиляторы и библиотеки содержат библиотеку <alloc.h>, которая предоставляет некоторые функции выделения памяти, но это не является стандартным. Среда выполнения Microsoft Visual C ++ включает функцию Alloc(), которая в некоторой степени похожа на функцию malloc(), но это также не является частью стандарта C.

malloc() выделяет память в куче процесса. Память, выделенная с помощью malloc(), останется в куче, пока не будет освобождена с помощью free().

alloca() выделяет память внутри стекового фрейма текущей функции. Память, выделенная с помощью alloca(), будет удалена из стека после возврата текущей функции. alloca() ограничено небольшими выделениями.

Ситуации, в которых alloca(), встречаются редко. Практически во всех ситуациях вы должны использовать malloc() для выделения памяти.

ответил duskwuff 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 21 Sep 2015 03:55:28 +0300 2015, 03:55:28
0

Функция alloc используется для выделения области или блока байтов размера по длине heap

Функция malloc используется для выделения heap хранилище. Его название обозначает распределение памяти.

ответил Girish Singh rathore 2 J0000006Europe/Moscow 2016, 01:38:48

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132