3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
|
||||||
1 | ||||||
new и delete28.08.2013, 19:07. Показов 2097. Ответов 33
Метки нет (Все метки)
как лучше очищать память?
0
|
28.08.2013, 19:07 | |
Ответы с готовыми решениями:
33
Написать аналог процедуры Delete. Процедурой Delete и функцией Copy не пользоваться Используя delete по указателю, возвращенному new [] или delete [] указателем, возвращаемым new Какая разница между delete и delete[] В чем разница между delete и delete[]? |
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
|
|
28.08.2013, 19:11 [ТС] | 3 |
т.е в моем случае лучше очищать в конце цикла?
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
28.08.2013, 19:16 | 4 |
-J_O_K_E_R-, что то я не могу понять твоего кода, видимо потому что не знаком с библиотекой stdio, как я понимаю sprintf это cin, а printf - cout, но как я понимаю код косячный, т.к. после первого же выполнения цикла, buff будет удалена, а для ввода нового значения память не будет выделена.
0
|
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
|
|
28.08.2013, 19:18 [ТС] | 5 |
выделяем память (динамическую)
запускаем цикл загоняем текущее значение i в память выводим на экран очищаем память
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
28.08.2013, 19:20 | 6 |
Так а на следующий круг (после первого) цикла память выделять не нужно? она же была удалена.
0
|
Неэпический
|
||||||
28.08.2013, 19:21 | 7 | |||||
В вашем случае вообще программа скорее всего упадет.
Попробуйте как-то так:
1
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
28.08.2013, 19:23 | 8 |
не скорее всего, а упадет, проверено только что
В данном коде buff надо удалять после цикла.
0
|
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
|
|
28.08.2013, 19:24 [ТС] | 9 |
я пробовал и так и вынос делете за цыкл и в цыкле
и работала нормально.. просто у меня код есть, при его выполнении оперативка растет с геометрической прогресии добавил в конце цыкла memset перестало рости... думаю под динамическое выделение переделать
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
28.08.2013, 19:25 | 10 |
-J_O_K_E_R-, глупый наверное вопрос, какая цель данной программы
0
|
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
|
|
28.08.2013, 19:26 [ТС] | 12 |
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
28.08.2013, 19:26 | 13 |
Ладно, не буду лезть, т.к. не знаю библиотеки stdio
1
|
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
|
|
28.08.2013, 19:28 [ТС] | 14 |
ты не понял....
прирост в другом коде... а на этом я тренерусь очищать память и изучаю операторы
0
|
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
|
|
28.08.2013, 19:29 [ТС] | 16 |
0
|
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
|
||||||
28.08.2013, 19:32 [ТС] | 17 | |||||
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
||||||
28.08.2013, 19:34 | 18 | |||||
-J_O_K_E_R-,
1. ты выделил память под buff 2. начинается цикл 3. в цикле ты вводишь buff и потом его печатаешь 4. потом ты удаляешь buff (очищаешь память) следующий круг цикла у тебя начинается с пункта 2, но только куда ты будешь записывать buff, если память удалена на прошлом круге, а новая не выделена? вариантов много, поместить char *buff = new char; в цикл или delete buff; поставить после цикла или вообще сделать так:
1
|
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
|
|
28.08.2013, 19:36 [ТС] | 19 |
уже разобрался....
VS 2012 с warning all делает код, но программа вылетает не начавшись.. все спасибо разобрался
0
|
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
|
||||||
28.08.2013, 19:44 [ТС] | 20 | |||||
все парни спасибо разобрался где утечка памяти компилировал на VS 2012
0
|
28.08.2013, 19:44 | |
Помогаю со студенческими работами здесь
20
Есть ли операторы new, new[], delete, delete[] Чем отличается delete[] от delete? Клавиша delete не работает,а вот shift + delete работает Delete или delete [] Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |