Вопросы и ответы по программированию.
- GanGSISoft
- Полковник
- Сообщения: 1430
- Зарегистрирован: 27.03.2008
- Откуда: Бацькаўшчына
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Pr0Ger
спасибо большое, всё ясно и понятно, так всё и было, не было ноля, и много где не было, однако волшебным образом он следовал сразу за концом выделенной памяти и всё работало.
Вот только одно, те мистические утечки есть что в простом примере что я приводил, и valgrind их не видит. Пишет что утечек нет, однако когда моей программе попадаются не UTF8 файлы, то она "набирает вес" после каждого файл. Экспериментально я установил что "набор веса" совершенно не звисит от наличия delete в определённых местах, то есть delete не работает, но как утечка это не valgrind'ом не считается. Почему же тогда увеличивается объём занимаемой памяти? И в core лежат куски этих неUTF8 файлов.
Ну да ладно, я надоел этим уже наверное,видимо просто опять накриворучил.
спасибо большое, всё ясно и понятно, так всё и было, не было ноля, и много где не было, однако волшебным образом он следовал сразу за концом выделенной памяти и всё работало.
Вот только одно, те мистические утечки есть что в простом примере что я приводил, и valgrind их не видит. Пишет что утечек нет, однако когда моей программе попадаются не UTF8 файлы, то она "набирает вес" после каждого файл. Экспериментально я установил что "набор веса" совершенно не звисит от наличия delete в определённых местах, то есть delete не работает, но как утечка это не valgrind'ом не считается. Почему же тогда увеличивается объём занимаемой памяти? И в core лежат куски этих неUTF8 файлов.
Ну да ладно, я надоел этим уже наверное,видимо просто опять накриворучил.
Последний раз редактировалось GanGSISoft 19.06.2011, 22:36, всего редактировалось 2 раза.
-
- Эксперты no-Steam
- Сообщения: 3501
- Зарегистрирован: 18.07.2008
- Благодарил (а): 2 раза
- Поблагодарили: 17 раз
- Контактная информация:
Код: Выделить всё
void * realloc ( void * ptr, size_t size )
А уменьшать массив с её помощью можно?
Код: Выделить всё
<var_pointer> = (<type>*)realloc(<var_pointer>, --array_len);
© [user]
- NiGHt-LEshiY
- Полковник
- Сообщения: 10258
- Зарегистрирован: 13.06.2008
- Откуда: Россия
- Благодарил (а): 752 раза
- Поблагодарили: 2667 раз
- Контактная информация:
[user]
Можно и уменьшать.
Можно и уменьшать.
По стандарту функция free не обязана возвращать освобожденную память операционной системе. Она лишь помечает её как свободную для дальнейшего использования в программе (чтобы потом выделить эту же память через malloc, calloc). И тем более free не зануляет память, поэтому куски текстовых файлов останутся в оперативной памяти.Вот только одно, те мистические утечки есть что в простом примере что я приводил, и valgrind их не видит. Пишет что утечек нет, однако когда моей программе попадаются не UTF8 файлы, то она "набирает вес" после каждого файл. Экспериментально я установил что "набор веса" совершенно не звисит от наличия delete в определённых местах, то есть delete не работает, но как утечка это не valgrind'ом не считается. Почему же тогда увеличивается объём занимаемой памяти? И в core лежат куски этих неUTF8 файлов.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.
Просьба присылать сообщения об ошибках в ЛС.
- ArsNG
- Полковник
- Сообщения: 3059
- Зарегистрирован: 20.12.2007
- Благодарил (а): 1069 раз
- Поблагодарили: 2893 раза
Делай memset 0 и потом free, не будет кусков.
Последний раз редактировалось NiGHt-LEshiY 20.06.2011, 15:31, всего редактировалось 1 раз.
Причина: Это не даёт ничего, кроме лишней работы.
Причина: Это не даёт ничего, кроме лишней работы.
- NiGHt-LEshiY
- Полковник
- Сообщения: 10258
- Зарегистрирован: 13.06.2008
- Откуда: Россия
- Благодарил (а): 752 раза
- Поблагодарили: 2667 раз
- Контактная информация:
[user]
Всегда обязательно. В случае неудачи возвращается NULL. Если после этого использовать "увеличенную", как думает программист, память - будут неприятности.
Всегда обязательно. В случае неудачи возвращается NULL. Если после этого использовать "увеличенную", как думает программист, память - будут неприятности.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.
Просьба присылать сообщения об ошибках в ЛС.
-
- Эксперты no-Steam
- Сообщения: 3501
- Зарегистрирован: 18.07.2008
- Благодарил (а): 2 раза
- Поблагодарили: 17 раз
- Контактная информация:
Не совсем понимаю... Я же уменьшаю выделенную область. Значения, по идеи, остаются в тех же адресах. При увеличении понятно - памяти может не хватить, а при уменьшении...NiGHt-LEshiY писал(а):Если после этого использовать "увеличенную", как думает программист, память - будут неприятности.
© [user]
- NiGHt-LEshiY
- Полковник
- Сообщения: 10258
- Зарегистрирован: 13.06.2008
- Откуда: Россия
- Благодарил (а): 752 раза
- Поблагодарили: 2667 раз
- Контактная информация:
Ах, упустил это.
Проверять хорошо бы в любом случае. А вдруг дальнейшее поведение программы зависит от выделенной памяти?
Проверять хорошо бы в любом случае. А вдруг дальнейшее поведение программы зависит от выделенной памяти?
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.
Просьба присылать сообщения об ошибках в ЛС.
-
- Эксперты no-Steam
- Сообщения: 3501
- Зарегистрирован: 18.07.2008
- Благодарил (а): 2 раза
- Поблагодарили: 17 раз
- Контактная информация:
и ещё 1 очень тупой вопрос... Я с дельфи мало знаком, изучаю преимущественно С/С++. В каком модуле описан класс TFileStream? Погуглил - без толку. Совершенно случайно наткнулся на информацию о нём... Он вроде предоставляет схожий с Си (fread, fwrite) функционал для работы с двоичными файлами.
© [user]
-
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
- Контактная информация:
[user]
TFileStream, насколько я помню, наследуется от TStream и реализует какой-то там интерфейс (предположительно IStream %) )... В какой IDE ты работаешь?
Google выдаёт вот что по этому вопросу: http://www.firststeps.ru/cbuilder/r.php?49 - там годно описано что это такое (правда синтаксис сишный, а не дельфёвый... но в дельфи также).
Описан он в модуле Classes.
TFileStream, насколько я помню, наследуется от TStream и реализует какой-то там интерфейс (предположительно IStream %) )... В какой IDE ты работаешь?
Google выдаёт вот что по этому вопросу: http://www.firststeps.ru/cbuilder/r.php?49 - там годно описано что это такое (правда синтаксис сишный, а не дельфёвый... но в дельфи также).
Описан он в модуле Classes.
- $t@t!c_V()1D
- Разработчик
- Сообщения: 2639
- Зарегистрирован: 06.12.2007
- Благодарил (а): 10 раз
- Поблагодарили: 29 раз
А WinAPI уже не торт? На любом языке доступны функции ReadFile, WriteFile, CreateFile...
Another guy on them internets
Уважайте команду CSMania.RU - задавайте вопросы правильно!
Уважайте команду CSMania.RU - задавайте вопросы правильно!
- GanGSISoft
- Полковник
- Сообщения: 1430
- Зарегистрирован: 27.03.2008
- Откуда: Бацькаўшчына
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Пишу gtk приложение. Как обрабатывать нажатия на клавиши? То есть, я нажимаю на клавишу с кодом , например 45, и вызывается функция обработки, её указывается что пользователь нажал клавишу 45.
Добавлено спустя 15 минут 24 секунды:
И какой смысл в типах gint, gboolean и др.?
Добавлено спустя 15 минут 24 секунды:
И какой смысл в типах gint, gboolean и др.?
Последний раз редактировалось GanGSISoft 01.08.2011, 19:33, всего редактировалось 1 раз.
- NiGHt-LEshiY
- Полковник
- Сообщения: 10258
- Зарегистрирован: 13.06.2008
- Откуда: Россия
- Благодарил (а): 752 раза
- Поблагодарили: 2667 раз
- Контактная информация:
ncursesКак обрабатывать нажатия на клавиши?
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.
Просьба присылать сообщения об ошибках в ЛС.
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
[user]
Копай в Classes ;)
GanGSISoft
Я реализовывал реакцию на мышь таким образом (если криво, просьба не пинать, кусок с первой программы в GTK:
Копай в Classes ;)
GanGSISoft
Я реализовывал реакцию на мышь таким образом (если криво, просьба не пинать, кусок с первой программы в GTK:
Код: Выделить всё
gtk_signal_connect(GTK_OBJECT(box), "motion_notify_event", (GtkSignalFunc)mouse_move, NULL);
gtk_signal_connect(GTK_OBJECT(box), "button_press_event", (GtkSignalFunc)mouse_down, NULL);
....
static gint mouse_move(GtkWidget *widget, GdkEventButton *event)
{ }
static gint mouse_down(GtkWidget *widget, GdkEventButton *event)
{ }
Для кросплатформы и различных сред, ибо тип данных int может оказаться и int32 и int16 и int64 (как будет объявлено и переназначено пользователем.И какой смысл в типах gint, gboolean и др.?
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).