Управление памятью с массивами HEAP - PullRequest
0 голосов
/ 15 января 2010

Если я создаю массив кучи внутри цикла, нужно ли мне удалять его в конце каждого цикла, прежде чем я снова инициализирую его в начале цикла, или повторная инициализация точно такой же вещи просто перезаписывает старый массив и я могу просто пропустить команду удаления?

Ответы [ 2 ]

1 голос
/ 15 января 2010

Вы имеете в виду что-то подобное?

for (int i = 0; i < 5; i++) {
    char *array = new char[10];
    // ...
    delete[] array;
}

В этом случае: да, вам нужно удалить массив.

Если бы вы написали что-то вроде этого,

char *array = 0;
for (int i = 0; i < 5; i++) {
    if (!array) array = new char[10];
    // ...
}
delete[] array;

тогда нет, вы можете повторно использовать массив в течение нескольких итераций цикла.

0 голосов
/ 15 января 2010

Добавление к ответу ephemient: почему вы думаете о повторной инициализации массива внутри цикла?

Ваш вопрос будет уместным, если каждая итерация вашего цикла должна выполнять оба эти шага:

1) Вставить данные в массив.

2) Сделайте что-нибудь с данными, которые были заполнены в массиве

Если это не похоже на то, что должен делать ваш код, тогда ответ на ваш вопрос, вероятно, должен быть: Не создавать или Удалить массив внутри цикла, Создайте массив перед циклом, а затем удалите его.

(По моему опыту, редко можно найти случай, когда шаги 1) и 2) выполняются в одном и том же цикле.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...