|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.12.2010, 21:48 | #1 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 75
|
free и метки
Здравствуйте, господа.
Никак не могу найти ответы на след. вопросы: 1). Для того, чтобы освободить выделенную ранее память, необходимо использовать, например, функцию free. Однако в таком случае я постоянно вижу сначала free (a), после чего a = NULL. Для чего это делается? 2). Многие говорят, что метки использовать надо как можно меньше. Как их тогда заменять в случае, например, если нам надо заново запустить функцию, в которой мы сейчас находимся? Заранее благодарю за возможные ответы. |
29.12.2010, 22:09 | #2 |
Смайлик :)
Форумчанин
Регистрация: 12.12.2010
Сообщений: 445
|
1) Ну это очищает память от мусора;
2) Ну в случае вызова функции в которой ты находишься. То тут рекурсия в помощь, а если просто выполнить действие которое выше. Используй do{}while()
Самый перспективный framework Yii (c)
|
29.12.2010, 22:12 | #3 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 75
|
Так ведь это уже делается при помощи free (a) или я что-то не так понял вообще?
Пример покажи для первого случая, если не сложно. |
29.12.2010, 22:21 | #5 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 75
|
Я про то, зачем после этого надо писать a = NULL вообще.
|
29.12.2010, 22:24 | #6 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 199
|
1) после удаления выделенного куска памяти переменную в которой был указатель (всмысле переменная это указатель = в ней записан адрес памяти) обнуляют (= NULL) чтобы показать что в ней нету выделенной памяти. если ты пытаешся выделить память потом в этот указатель ты проверяешь равен ли он NULL если равен то выделяеш ьпамять, если нет то сначало удаляешь старую.. тожесамое при удалении удалят ьможно только то что не = null. NULL это просто адрес памяти = 0. в нем никогда не бывает выделенных блоков памяти
2) Это низкоуровневый стиль программирования.. метки/goto юзают тока на асме по хорошему. Они усложняют понимание кода и увеличивают количество ошибок.. заменять всем чем только сможешь - всяческие break continue return. Все от случая зависит. юзать их можно конечно, но только в целях оптимизации или если без них вобще никак не удается обойтись. Если заного надо функцию запустить то вызываешь ее же с теми же параметрами(рекурсия), ну либо делаеш ьвсе содержимое функции в какомнить бесконечном цикле и в конце ставишь break если можно уже выходить из этой функции Последний раз редактировалось UltimaBeaR; 29.12.2010 в 22:29. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание метки | FUNNY_SAM | Общие вопросы C/C++ | 0 | 23.12.2009 15:58 |
ПАСКАЛЬ. Поставить метки | mistertvister | Помощь студентам | 6 | 30.10.2009 17:09 |
Не работают метки | ИВэТэшка | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 22.07.2009 22:05 |
Метки в делфи | Neymexa | Помощь студентам | 1 | 29.01.2009 16:52 |