Форум программистов, компьютерный форум CyberForum.ru

Вопрос про catch и delete - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
11.08.2011, 22:21     Вопрос про catch и delete #1
по какой причине данная операция совершается успешно?
ведь указатель равен 0.
Миниатюры
Вопрос про catch и delete  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2011, 22:21     Вопрос про catch и delete
Посмотрите здесь:

Расскажите про new и delete в C++ C++
C++ вопрос про new из с++ за 21 день
Вопрос про цикл for C++
C++ Вопрос про outtextxy()
C++ Вопрос про наследование.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.08.2011, 15:07     Вопрос про catch и delete #21
Почему-то никто не написал, что для сравнение си-строк надо использовать стандартную strcmp. Посему спешу исправить это недоразумение))
P.S. Или я не заметил, и кто-то написал? Или автору не строки надо сравнивать? Что-то я запутался...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
12.08.2011, 15:09     Вопрос про catch и delete #22
silent_1991, ну на это, как бы, намекали А Net_Wanderer использовал её в своём примере.
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
12.08.2011, 15:16  [ТС]     Вопрос про catch и delete #23
grizlik78, спасибо. но рассмотри пожалуйста мой пример.
для сравнения строк надо конечно strcmp. Я так понимаю этот кусок моего кода это вообще пример того как НЕ надо делать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
char* a = "BLACK";
char* b = "BLACK";
 
throw(a);
 
 
 
catch(char* K)
{
 
if(K=="BLACK")//здесь поясни плиз что происходит. пойман указатель а. но с чем он сравнивается?
{                  //что такое "BLACK"  в данном контексте? можно ли вообще так сравнивать?
                   //это я сравниваю указатель со строковым литералом? т.е. вообще ерунда //              
//получается? и результат неопределен? студия дала тру. но я так понимаю это случайность?
 
 
}
 
 
}
Добавлено через 3 минуты
что называется дал маху. хорошо есть опытные люди на форумах. а то так и думал бы я что все ок
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
12.08.2011, 15:17     Вопрос про catch и delete #24
Гарантировать true нельзя. Сравниваются здесь указатели. Компилятор встретив три раза "BLACK" вправе разместить эту константную строку в памяти только один раз. В этом случае значения a и b будут однинаковыми, а сравнение даст true. Но компилятор никто не заставляет экономить память и он может разместить эту строку в памяти 3 раза. Тогда значения a и b будут разными (то есть они указывают на одинаковые строки, но расположенные в разной области памяти). Сравнение в этом случае даст false.
silent_1991
12.08.2011, 15:22
  #25

Не по теме:

grizlik78, чорд, значит, всё-таки проглядел))

AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
12.08.2011, 15:26  [ТС]     Вопрос про catch и delete #26
так будет правильно?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define BLACK 1
#define RED 2
 
throw(BLACK);
 
 
catch(int a)
{
 
if(a==BLACK)
{
 
}
 
}
ну или как Валерий писал
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
12.08.2011, 15:36     Вопрос про catch и delete #27
Если сильно охото строки, то
C++
1
2
3
std::string str("Hello");
 
if(str == "Hello") ...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2011, 15:51     Вопрос про catch и delete
Еще ссылки по теме:

вопрос про скобки C++
Вопрос про реестр C++
Вопрос про char C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
12.08.2011, 15:51     Вопрос про catch и delete #28
Цитата Сообщение от AzaKendler Посмотреть сообщение
ну или как Валерий писал
Лучше так, это же C++ в нем макросы не преветствуются
Yandex
Объявления
12.08.2011, 15:51     Вопрос про catch и delete
Ответ Создать тему
Опции темы

Текущее время: 04:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru