Из того, что написано здесь, new
выделяет в свободном хранилище, а malloc
использует кучу, и два термина часто означают одно и то же.
Из того, что написано здесь, realloc
может переместить блок памяти в новое место. Если свободное хранилище и куча - это два разных пространства памяти, значит ли это любая проблема?
В частности, я хотел бы знать, можно ли использовать
int* data = new int[3];
// ...
int* mydata = (int*)realloc(data,6*sizeof(int));
Если нет, есть ли другой способ realloc
памяти, выделенной с помощью new
безопасно? Я мог бы выделить новую область и memcpy
содержимое, но из того, что я понимаю, realloc
может использовать ту же область, если это возможно.