IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

3 страниц V < 1 2 3  
 Ответить  Открыть новую тему 
> тип string, утечка памяти, C++ Builder 6
сообщение
Сообщение #41


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Цитата(volvo @ 27.09.2009 14:47) *

Значит, в BCB6 такая "хорошая" работа с памятью...

О да, я крут, сел осваивать новый язык и тут же нашёл нехилый баг в компиляторе.
Цитата

Проверь на более новом Билдере. Попробуй проверить на другом С++ компиляторе, есть ли утечка там?

Я попробую найти другой С++ компилятор, но это не так просто.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #42


Гость






Цитата
но это не так просто.
Чего сложного?
http://www.codeblocks.org/downloads/5 (IDE вместе с компилятором и отладчиком, около 20Мб)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #43


Гость






Цитата
сел осваивать новый язык и тут же нашёл нехилый баг в компиляторе.
Нет, этот баг нашел не ты, его нашли другие... Ты просто на него нарвался. На delphigroups.info проскакивала информация об ошибке, связанной с синтаксисом catch(...) на старых Билдерах, и о том, что желательно использовать конструкцию catch(Exception&) вместо нее... Так что сначала попробуй код:
#include <exception>
// ...
int i = 1;
while(1)
{
try
{
int j = i / 0;
}
catch (Exception& e)
{
// ShowMessage(e.Message);
}

}
, и проверь, "утекает" ли по-прежнему память?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #44


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +



catch (Exception &E) {
...
delete &E;
};


Помогло. Без делита - утечка.
Мдааа.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #45


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


А такой код, с удалением исключения, будет работать на новых билдерах?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #46


Гость






Цитата
А такой код, с удалением исключения, будет работать на новых билдерах?
Нет, при попытке сделать
delete &E;
получишь Invalid pointer operation, и этим дело закончится.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #47


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Тогда какой #ифдеф на этот случай посоветуете? Я в них ноль, так как не приходилось сталкиваться с таким.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #48


Гость






Насколько я помню номера компиляторов - так:
		catch (Exception& e)
{
// ...
#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564)
delete &e;
#endif
// e.Free();
}

0x560 - это "чистый" BCB6, и еще 4 - с разными Service Pack-ами
 К началу страницы 
+ Ответить 
сообщение
Сообщение #49


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> && (__BORLANDC__ >= 0x560)

Ну, во-первых, у меня вроде 5.5, во-вторых, это условие говорит, что для более ранних версий этого бага не было?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #50


Гость






Ты спрашивал, как определить Билдер 6 директивами компиляции? Я тебе показал, как это делается... Нужно включить ВСЕ глючные версии - убирай нижнее условие, оставляй только верхнюю границу...

Баг был на всех Билдерах, как минимум до BDS 2006, если не до BDS 2007, только потом был исправлен. А если у тебя 5.5, то посмотри внимательно на название темы, и пойми, что телепаты обходят этот форум стороной.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #51


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Всё, больше вопросов нет, спасибо.

Сообщение отредактировано: TarasBer -


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #52


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Как заставить встроенные функции модуля math не выводить ошибку в случае исключения? Если исключения ловлю Я, то зачем их ловилку всунули в модуль?!


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #53


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Заменил матх на фастматх, обнаружил новый прикол.
gcvt виснет, если ему подсунуть exp(999) в консольном приложении.
Сколько ещё багов встроено в этот замечательный компилятор?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

3 страниц V < 1 2 3
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 15:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name