Страницы

Поиск по вопросам

суббота, 28 декабря 2019 г.

Выделение определенного количества памяти из кучи

#cpp #память


Как выделить определенное количество памяти из кучи? Например: мне надо выделить
5 байт памяти из кучи, каким образом это можно сделать?
    


Ответы

Ответ 1



Странный вопрос. Память в куче выделяется для динамических переменных. Например так: char* array = new char[5]; Не забудьте, что кроме выделения памяти, память надо будет не забыть вернуть в кучу после использования. char* array = new char[5]; //выделение памяти из кучи delete [] array; //возврат памяти в кучу UPD1: Не забудьте, что если Вы получаете не массив, а один элемент, то оператор возврата памяти в кучу имеет другой вид (без квадратных скобок). char* ptr = new char; //выделение одного элемента delete ptr; //возврат одного элемента в кучу

Ответ 2



Концептуально с кучей (heap) оперируют malloc и free, а new/delete работают с областью памяти, называемой "free store". И хотя new и delete могут быть (скорее всего так и есть в вашем компиляторе) реализованы через malloc и free соответственно, ответ на ваш вопрос будет такой: void* p = malloc(5); // выделяет память из кучи В то время как вариант с new выделит память из free store: void* p = new char[5]; // выделяет память из free store Правильнее всё-таки будет использовать вариант с operator new, а не выражение с массивом: void* p = ::operator new(5); // всё ещё free store При этом в самом стандарте С++ термин куча (heap) используется исключительно для структуры данных "куча". По поводу дополнительных различий heap и free store можно обратиться к вопросу на enSO.

Ответ 3



Странный вопрос. Память в куче выделяется для динамических переменных. Например так: char* array = new char[5];

Комментариев нет:

Отправить комментарий