За кулисами выделяется память, маленький кусочек кремния где-то в вашей машине теперь выделен массиву, который вы только что new
отредактировали.
Когда вы хотите «изменить размер» вашего массива, это можно сделать только вместо , если кусок кремния имеет свободное пространство вокруг него. В большинстве случаев вместо этого необходимо зарезервировать другой, больший, кусок и скопировать данные, которые были в первом ... и, очевидно, отказаться от первого (в противном случае у вас есть утечка памяти).
Это выполняется автоматически контейнерами STL (например, std::vector
или std::deque
), но вручную, когда вы сами вызываете new
. Поэтому лучшее решение, позволяющее избежать утечек, - это использовать стандартную библиотеку, а не пытаться эмулировать ее самостоятельно.