|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.10.2011, 16:54 | #1 |
Форумчанин
Регистрация: 07.08.2011
Сообщений: 576
|
изменение размерности массива
с++
всем доброго времени суток. прежде чем задать вопрос, сразу скажу- STL не затрагивать. Ну и собственно вопрос: как в процессе работы программы корректно изменить размерность динамического массива, чтобы не было утечки памяти? Вот написал небольшую программу. В ней пользователь может менять размерность. Вроде ни каких глюков нет, но мне кажется там не совсем правильно. Код:
потом уменьшим размерность до пяти. что в этом случае станет с последними пятью ячейками? ведь я их delete не уничтожил. если все-таки мой вариант не правильный- Подскажите как правильно менять размерность. еще раз повторюсь- без употребления STL. Последний раз редактировалось SAMOUCHKA; 11.10.2011 в 19:32. |
11.10.2011, 17:04 | #2 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
SAMOUCHKA
мы задали размерность массива 10 потом уменьшим размерность до пяти ничего ты не "уменьшил". просто итерация будет осуществляться не до конца массива, вот и всё. set_array(z, array); get_array(20, array); выход за границы массива, в случае если x < 20 как правильно менять размерность - выделить новую память (new[]) - скопировать массив (memcpy) - удалить старую память (delete[])
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
11.10.2011, 17:11 | #3 |
Форумчанин
Регистрация: 07.08.2011
Сообщений: 576
|
а почему тогда при уменьшении z в оставшихся ячейках мусор всякий. это я своими глазами видел
если я ни чего не уменьшал, тогда-бы ни чего не изменилось если при смене размера повторно не применить array = new int z; то действительно не чего не меняется. еще вопрос- есть-ли способ для обнаружения утечки памяти? Последний раз редактировалось Stilet; 12.10.2011 в 08:27. |
11.10.2011, 23:32 | #4 | |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
перед тем как делаешь повторный new int[], удали старый, а то память выделяешь два раза а освобождпешь один, и что еще печальней не тем delete (тут уже было).
Цитата:
Последний раз редактировалось f.hump; 11.10.2011 в 23:34. |
|
12.10.2011, 12:56 | #5 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
SAMOUCHKA
есть-ли способ для обнаружения утечки памяти? Конечно есть. Хотя лучше всего использовать C++ и забыть о том, что такое утечки. если же все же хочется онанизма на "Си с классами"... способ попроще - гоогле Debug CRT Library способ посложнее - гоогле AQtime Pro
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
12.10.2011, 15:19 | #6 | |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
Цитата:
|
|
12.10.2011, 15:23 | #7 |
Форумчанин
Регистрация: 15.12.2010
Сообщений: 398
|
Наверное опечатка и там С# но и в шарпе есть утечки если не отписаться от события например
|
13.10.2011, 02:36 | #8 |
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
|
13.10.2011, 09:12 | #9 |
Форумчанин
Регистрация: 07.08.2011
Сообщений: 576
|
ну так это вроде STL? я же в самом начале писал что его не надо использовать.
не знаю я это, пока еще. думаю что прежде чем учить STL надо в чисто с++ как следует разобратся. |
13.10.2011, 10:47 | #10 | |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Цитата:
И смарт поинтеры вместо обычных указателей. Кто не хочет пользоваться STL и другими библиотеками, может написать свое
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изменение всего массива | RedStorm | Microsoft Office Excel | 2 | 10.04.2011 12:54 |
C++ - изменение размера массива | kefir | Помощь студентам | 1 | 19.06.2010 11:42 |
Задание размерности 2мерного массива | Bernarditto | Общие вопросы C/C++ | 2 | 18.06.2010 17:04 |
Конструктор для изменения размерности массива | and277 | Общие вопросы C/C++ | 2 | 10.08.2009 20:47 |
увеличение размерности массива | Лучик_света | Общие вопросы .NET | 3 | 25.10.2008 04:36 |