у меня есть сомнения по поводу использования функции realloc() в C++. Мне нужно, чтобы в основном изменить размер массива, удалив первый элемент. Это то, что я сделал
cell* Queue::pull() {
cell* data = cellArray[0];
arrayLen--;
cell** temp = (cell**)realloc(cellArray+1, sizeof(cell*)* (arrayLen));
if (temp == NULL) {
return 0;
}
cellArray = temp;
return data;
}
arrayLen является целым числом и хранит текущую длину очереди, а cellArray представляет собой массив ячеек *, который был выделен и заполнен ранее.
cell** cellArray;
int arrayLen = 0;
Моя проблема: это вызывает утечку памяти? Освобождает ли realloc пространство, которое использовалось первым элементом массива, или это в основном то же самое, что и что-то вроде:
cell** temp = cellArray+1;
Заранее спасибо.
realloc
любой указатель, который не был возвращаемым значением одной из функций выделения C.cellArray+1
не является таким указателем. - person molbdnilo   schedule 30.03.2017realloc
в C++?? - person Lightness Races in Orbit   schedule 30.03.2017realloc
, весь ад вырвется на свободу. Не делай этого. - person Jesper Juhl   schedule 30.03.2017std::vector
и забудьте, чтоrealloc
,malloc
иfree
существуют. А для динамического размещения даже забудьте, чтоnew
иdelete
существуют 99% времени, и просто используйтеstd::make_unique
иstd::make_shared
. - person Jesper Juhl   schedule 30.03.2017