Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Исключение в конструкторе вызывает повреждение, памяти - решение 
:(
    Опции темы
Royan
  Дата 6.7.2004, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Хотел было задать вопрос а потом до самого дошло ;) быть может кому-то это сбережет час времени

Нерпавильный код:

Код
 this->pMyFile = NULL;

 this->pMyFile = new CMyFile;//Выделяем память

 //Fire exception if failed to recieve memory
 if(/*Какое бы ни было условие*/){
   //Пытаясь пркратить конструирование объекта пытаемся выбросить исключение
   throw S_FALSE;//Вот здесь мы повредим память, о чем нам тут же сообщат
 }


Правильный код:

Код
 this->pMyFile = NULL;
 this->pMyFile = new CMyFile;//Выделяем память
 //Fire exception if failed to recieve memory
 if(/*Какое бы ни было условие*/){
   //Пытаясь прекратить конструирование объекта пытаемся выбросить исключение
   if(this->pMyFile !=NULL)
     delete this->pMyFile;//Сначала освободим память если она была выделена
   throw S_FALSE;//и только теперьвыбрасываем исключение
 }



--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Олег М
Дата 7.7.2004, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Пользуйся классами типа auto_ptr - таких проблем не будет.
Добавлено @ 14:51
http://msdn.microsoft.com/library/default....toptr_class.asp
PM MAIL ICQ   Вверх
Royan
Дата 7.7.2004, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



auto_ptr, это CRT, а CRT в виндах я пытаюсь изжить, так как там и так процедур хватает, чтобы решить практически любую повседневную задач


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Олег М
Дата 7.7.2004, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Что-то ты не то говоришь, Royan. auto_ptr - это шаблон специально разработанный для работы с указателями, чтобы они автоматически удалялись, типа статичных объектов. Мне, лично, он тоже не очень нравится - я написал свой класс - потому что ахеренно нужно. И многие виновски хэндлы через него пользую.

Добавлено @ 15:00
А чем тебе ЦРТ не понравилось?
PM MAIL ICQ   Вверх
Royan
Дата 7.7.2004, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Цитата
А чем тебе ЦРТ не понравилось?


Все для своих целей в WinAPI следует пользоваться тем, что есть в Win32, а в консоле STL и подобные


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Олег М
Дата 7.7.2004, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата
Все для своих целей в WinAPI следует пользоваться тем, что есть в Win32, а в консоле STL и подобные

С ума сошёл?
STL - никаким местом не связана с консолями и винапи. Так же как остальные стандартные библиотеки.
Это всё !!!СТАНДАРТНЫЕ!!!! библиотеки С++, которые, за не которыми исключениями, будут работать ГДЕ-УГОДНО. И при разработки программ хорошим стилем считается пользоваться именно ими

Добавлено @ 15:21
Ты же пользуешься new и delete а это тоже из ЦРТ
PM MAIL ICQ   Вверх
AndyY
Дата 7.7.2004, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.5.2004
Где: СПб

Репутация: 2
Всего: 4



Олег М
ну, без нужды функции CRT лучше не пользовать. особенно вызывают сомнения функции типа setjump или beginthreadex... Уж лучше по простому - CreateThread, goto или return.

про STL - стандартная-то она стандартная, но приходится таскать за собой лишнюю dll на 400 килов, что элегантности проге не прибавляет (msvcp60.dll). И код с ее применением становится ужасно читаем.



--------------------
PM MAIL WWW   Вверх
Royan
Дата 7.7.2004, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Цитата
STL - никаким местом не связана с консолями и винапи.

А разве я говорил, что связана?

И то что мною здесь было написано относится исключительно к MS VC++. В STL сплошь и рядом юзаются new и delete => STL для MS VC++ напрямую завзязана с CRT. Тот факт, что их пользую я и говорю, что пытаюсь от этого уйти, тоже правда, а использование этих операторов не более чем пережиток внутри моих программ для Win32, также как и многие из нас не считая себя язычниками празднуют масленицу... baaa.gif


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Vyacheslav
Дата 8.7.2004, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата(Royan @ 7.7.2004, 17:51)
В STL сплошь и рядом юзаются new и delete => STL для MS VC++ напрямую завзязана с CRT. Тот факт, что их пользую я и говорю, что пытаюсь от этого уйти, тоже правда, а использование этих операторов не более чем пережиток внутри моих программ для Win32,

Класс !!!. В таком случае можно смело заявлять, что и весь С++ - пережиток.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Олег М
Дата 8.7.2004, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата
сомнения функции типа setjump или beginthreadex

setjump - базара нет. Ей вообще лучше нигде не пользоваться.
А beginthreadex сделана специально для виндов. В ней до кучи инициализируется многопотоковое ЦРТ. Так что если используются стандартные библиотеки, то настоятельно рекомендуется пользоваться ей вместо CreateThread.

Цитата
В STL сплошь и рядом юзаются new и delete => STL для MS VC++ напрямую завзязана с CR

Во первых операторы new и delete можно переписать как тебе угодно и будут юзаться именно они.

Во вторых, дурью не майся, напиши свой класс типа auto_ptr, если он тебе не нравится (я так и сделал). Это тебе ОЧЕНЬ облегчит жизнь в ахеренных количествах ситуаций. Я бы тебе свой прислал - да под рукой сейчас нет, разве через недельку, если напомнишь.

Цитата
но приходится таскать за собой лишнюю dll на 400 килов, что элегантности проге не прибавляет (msvcp60.dll).

Что-то раньше не слишком-то эта ДЛЛка мешала (я об ней вообще не знал).

Цитата
И код с ее применением становится ужасно читаем.

Дык пиши так, чтобы он был не ужасно читаем. Что тебе мешает?
PM MAIL ICQ   Вверх
Vyacheslav
Дата 8.7.2004, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата(AndyY @ 7.7.2004, 17:25)
про STL - стандартная-то она стандартная, но приходится таскать за собой лишнюю dll на 400 килов, что элегантности проге не прибавляет (msvcp60.dll). И код с ее применением становится ужасно читаем.

STL - не элегантна и плохо читаема? На мой вгляд - это одна из самых элегантых библиотек, придающая коду лаконичность и читабельность. И непонятно, зачем для STL потребовалась библиотека на 400 кило, по-скольку вся библиотека - шаблоны в хидерах. Хотя здесь утверждать не берусь. Я VC не дружу, а Билли еще и не так может


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Олег М
Дата 8.7.2004, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата
На мой вгляд - это одна из самых элегантых библиотек, придающая коду лаконичность и читабельность.

Дай пять! adv/knuddel.gif
PM MAIL ICQ   Вверх
AndyY
Дата 8.7.2004, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.5.2004
Где: СПб

Репутация: 2
Всего: 4



Vyacheslav,
Олег М

smile.gif
мое мнение - что stl - это шутка, которую все восприняли всерьезsmile.gif)
ну о какой читаемости идет речь
Код

   list  < MyStruct>  thelist;
    thelist.push_back(obj);
    thelist.push_back(obj);
    thelist.push_back(obj);
    for(list< MyStruct>::iterator   i = thelist.begin(); i != thelist.end(); i++)
    {
           // можно обратиться к структуре так:
           (*i).A = 123;
...
    }

(пример из фака по STL от mr.DUDA).

Крайне сомнительная эленантность присутствует в выражении list< MyStruct>::iterator:).
А уж i++ - просто вредно, неокрепшие умы могут подумать что структуры лежат в памяти линейно.
Также неуклюжа конструкуия (*i).A - куда естественней i->

К примеру - как написал бы я:
Код

_list_t<MyStruct *> thelist;
thelist.add_tail( obj );
thelist.add_tail( obj );
thelist.add_tail( obj );

for( long lpos = thelist.head(); lpos; lpos = thelist.next( lpos ) )
{
  thelist.get( lpos )->a = 123;
}


что делать, когда требуется отдать итератор в другой модуль, который не имеет доступа к stl классам, а может быть вовсе написан на дельфи - также не ясно.
Добавлено @ 12:52
в общем, жду примеров использования библиотеки, которые делают код более читаемым, лаконичным и элегантным.


--------------------
PM MAIL WWW   Вверх
Олег М
Дата 8.7.2004, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата
А уж i++ - просто вредно, неокрепшие умы могут подумать что структуры лежат в памяти линейно.

Неокрепшие умы вообще много чего могут подумать. И что писать библиотеки в расчёте на них. Списибо. Сталкивался.

Цитата
Также неуклюжа конструкуия (*i).A - куда естественней i->

Ну это к mr.Dude. Откуда я знаю - нафига он так написал?

Цитата
К примеру - как написал бы я:

Это пример хорошего или плохого стиля?

Цитата
что делать, когда требуется отдать итератор в другой модуль, который не имеет доступа к stl классам, а может быть вовсе написан на дельфи - также не ясно.

Не отдавать!

Согласен, в СТЛ есть кой-какие заморочки - но скорее всего я в них ещё просто не разобрался.

PM MAIL ICQ   Вверх
srd
Дата 8.7.2004, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



О том, как отвязаться от CRT и стоит ли это делать, можно почитать здесь


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Олег М
Дата 8.7.2004, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Да что мы на это несчастное ЦРТ набросились? Проблема-то совсем другом. Royan просто путается в указателях.
Цитата
Все для своих целей в WinAPI следует пользоваться тем, что есть в Win32, а в консоле STL и подобные

А свои-то классы ты хоть используешь? Или только МФЦ, АТЛ и ВинАПИ?

Добавлено @ 13:54
В АТЛ есть ещё CAutoPtr. Тоже самое, что auto_ptr, но не ЦРТ!!!
PM MAIL ICQ   Вверх
Vyacheslav
Дата 8.7.2004, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата

Крайне сомнительная эленантность присутствует в выражении list< MyStruct>::iterator:).
А уж i++ - просто вредно, неокрепшие умы могут подумать что структуры лежат в памяти линейно.

Очень надеюсь, что "неокрепшие умы" прежде всего обратят на тип переменной, по отношению которой применен оператор ++. В противном случае, пускай отправляются учить С++, иначе и без STL можно дров наломать.



Странно. Это понятно
Код

for(int i = 0; i <end;i++)

А это нет ?
Код

for(list< MyStruct>::iterator  i = thelist.begin();  i != thelist.end(); i++)

Ваш пример более неудачен
Замену puch_back (втолкнуть сзади) на add_tail (вставить в хвост) мы пропускаем
Но вот это
Код

for( long lpos = thelist.head(); lpos; lpos = thelist.next( lpos ) )
{
  thelist.get( lpos )->a = 123;
}

lpos - имеет тип long и следовательно это у Вас обычный индекс. Но тогда уж следовало написать проще и заодно задействовать перегрузку оператора []
Код

for( long lpos = thelist.head(); lpos < thelist.end();  lpos++ )
{
  thelist[i]->a = 123;
}


Цитата

Также неуклюжа конструкуия (*i).A - куда естественней i->

А вот здесь вы совершенно правы.
А потому куда бы лучше смотрелось
Код

   for(list< MyStruct>::iterator   i = thelist.begin(); i != thelist.end(); i++)
   {
         
          i->A = 123;

   }


Цитата

что делать, когда требуется отдать итератор в другой модуль, который не имеет доступа к stl классам, а может быть вовсе написан на дельфи - также не ясно.

Не ясно, зачем отдавть итератор. Итератор - это лишь способ доступа к элементам контейнера. Нужно отдавать сам элемент.






--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
AndyY
Дата 8.7.2004, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.5.2004
Где: СПб

Репутация: 2
Всего: 4



Vyacheslav

for(int i = 0; i <end;i++)
это, конечно, ясно всем, тут с вами согласен.

for(list< MyStruct>::iterator i = thelist.begin(); i != thelist.end(); i++)
это - не понятно. оно прикидывается индексом, но таковым не является.

lpos - имеет тип long и следовательно это у Вас обычный индекс. Но тогда уж следовало написать проще и заодно задействовать перегрузку оператора []

lpos - не обычный индекс, а ключ доступа (грубо говоря, указатель на некоторую структуру в списке, но по большому счету пользователю классов это по барабану). аналог - POSITION в mfc.
перекрывать operator[] - смысла нет, зачем? синтаксис get c возвращением указателя значительно очевидней.

отдавать итератор - нужно. Например, некая dll экспортит следующий набор функций:

Код

void *get_obj_list();
long first_obj_pos( void *pobj_list );
long next_obj_pos( void *pobj_list, long lpos );
void *get_object( void *pobj_list, long lpos );
void remove_object( void *pobj_list, long lpos );


что отдавать в качестве, если список реализован через STL? Естественно, что-то типа итератора (не сам объект, а ключ доступа к нему). А как?

Да и вовсе маскировать доступ к списку под доступ к массиву - не естественно.

All
mr.Duda просьба не обижать, я его упомянул только как автора кода (типа его copyright)


--------------------
PM MAIL WWW   Вверх
Олег М
Дата 8.7.2004, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата
for(list< MyStruct>::iterator i = thelist.begin(); i != thelist.end(); i++)
это - не понятно. оно прикидывается индексом, но таковым не является.

С какой радости оно прикидывается индексом? Это итератор, он им и прикидывается.

Цитата
что отдавать в качестве, если список реализован через STL? Естественно, что-то типа итератора (не сам объект, а ключ доступа к нему). А как?

Вот в этом-то и беда. Я так и не смог добится как из вектора получить указатель на массив. Наверное неглубоко копал?

Цитата
mr.Duda просьба не обижать, я его упомянул только как автора кода (типа его copyright)

А зачем ты приводишь тогда такие примеры?

Повторюсь, что мы ушли в сторону.

PM MAIL ICQ   Вверх
Royan
Дата 8.7.2004, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Ну вы народ и развели флад в топике ... wink.gif
Цитата
А свои-то классы ты хоть используешь? Или только МФЦ, АТЛ и ВинАПИ?

Именно разрабатывая свою библиотеку классов я и сталкиваюсь с большинством вопрсов, о которых иногда спрашиваю Вас - (участников форума).

Мне интересен такой вопрос - в каких случаях возинкает упомянутая в этом а также в этом: http://forum.vingrad.ru/index.php?showtopic=25717 топике ошибка, (кроме уже описанных)


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Олег М
Дата 9.7.2004, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата
Мне интересен такой вопрос - в каких случаях возинкает упомянутая в этом а также в этом: http://forum.vingrad.ru/index.php?showtopic=25717 топике ошибка, (кроме уже описанных)

А что за ошибка-то? Ты её хоть выловил?
PM MAIL ICQ   Вверх
Vyacheslav
Дата 9.7.2004, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



И все таки. Увидев эту запись, программист владеющий С++ в границах его стандарта (выделено мной) , сразу поймет, что здесь имелось ввиду
Код

   list<MyStruct>  thelist;
   struct MyStruct obj;
   thelist.push_back(obj);
   thelist.push_back(obj);
   thelist.push_back(obj);
   int j = 0;
   for(list< MyStruct>::iterator   i = thelist.begin(); i != thelist.end(); i++)
   {
          i->A = j++;

   }
   ...
   list< MyStruct>::iterator   i = thelist.begin();
   while (i != thelist.end())
       cout << i++->A << endl;

При этом в пределах поставленной задачи, здесь нет ни строчки лишнего кода. Следовательно лаконично и прозрачно для понимания на уровне знания стандарта.
При этом не возникают вопросы типа : а что имелось ввиду под long lpos?, на которые
дают ответы : Это аналог - POSITION в mfc.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
AndyY
Дата 9.7.2004, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.5.2004
Где: СПб

Репутация: 2
Всего: 4



Vyacheslav

Код

cout << i++->A << endl;


да, от +, -, > и <, рябит в глазахsmile.gif))
если вы называете это читаемым кодом - нам обсуждать больше нечего. мы просто живем на разных планетах.




--------------------
PM MAIL WWW   Вверх
Vyacheslav
Дата 9.7.2004, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



А Вы считаете это нечитаемым кодом? Тогда действительно нечего обсуждать раз операция вывода в поток для у Вас вызыает затруднения, или Вам трудно понять приоритеты операций?


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Олег М
Дата 9.7.2004, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата
А Вы считаете это нечитаемым кодом? Тогда действительно нечего обсуждать раз операция вывода в поток для у Вас вызыает затруднения, или Вам трудно понять приоритеты операций?

Vyacheslav, AndyY прав. Это не код. Это понты. Лень ставить скобки?

PM MAIL ICQ   Вверх
Vyacheslav
Дата 9.7.2004, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Это не понты. Скобки нужны для переопределения приоритетов. Если приоритеты ясны, так зачем скобки. Для "неокрепших умов" ? Нет, уж спасибо.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
AndyY
Дата 9.7.2004, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.5.2004
Где: СПб

Репутация: 2
Всего: 4



Vyacheslav
скобки нужны для экономии денег на этапе багфикса и модификации существующего кода.smile.gif, как и все что говорится о читаемости кода.
чтобы понять ваш код, мне понадобилось вникать примерно 3 секунды. При фиксе баг, когда в голове уже достаточно _важной_ информации, это может быть критичным.

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



--------------------
PM MAIL WWW   Вверх
Vyacheslav
Дата 9.7.2004, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



В общем замнем эту тему. Андрей, я прочел Ваш "Куда приводит GOTO" и понял, что мы действительно живем на разных планетах.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Royan
Дата 9.7.2004, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



2Vyacheslav
Цитата
А что за ошибка-то? Ты её хоть выловил?


Нет не выловил. Это что-то типа выполнения макроса ASSERT() т.е. ошибка происходит в run-time. Фрагмент кода, который "продуцирует" это сообщение после применения оператора delete, приведен здесь: http://forum.vingrad.ru/index.php?showtopic=25717 в асмом первом сообщении.



--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.