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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Куда уходит память. 
V
    Опции темы
Хоббит
Дата 18.1.2009, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

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



Утечки памяти ищу с помощью valgrind.
Беру пустую программу 

Код

int main(int argc, char *argv[])
{    
    return 0;
}


Проверяю 1 allocs, 0 frees.
Думал, что память выделяется под argv пробовал удалять, valgrind сказал, что это не та память. Наверно память выделяется для вызова программы... не знаю точно.

Далее пишу
mysql_init(&mysql_);
mysql_close(&mysql_);

Проверяю 2 allocs, 0 frees.
Уже интересней
mysql_init(&mysql_);
mysql_real_connect(......);
mysql_close(&mysql_);

17 allocs, 0 frees

И ничего я с этим поделать не мог. Неужели память пропадает в внутренних структурах библиотеки mysql?
Что за 1 блок остается всегда от программы?
PM MAIL   Вверх
andrew_121
Дата 18.1.2009, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



Хоббит, Походу, это тебе нужно капать в код используемой тобой либы. Хотя не факт что память утекает. Возможно, она кешируется.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
vinter
Дата 18.1.2009, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

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



Цитата(Хоббит @  18.1.2009,  13:23 Найти цитируемый пост)
Утечки памяти ищу с помощью valgrind

может проблема в тупости сего инструмента?


--------------------
Мой блог
PM MAIL WWW   Вверх
andrew_121
Дата 18.1.2009, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



Цитата(vinter @  18.1.2009,  12:33 Найти цитируемый пост)
может проблема в тупости сего инструмента? 

Исключено!!!
В работоспособности сего инструмента убеждался не раз!!!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Lycifer
Дата 18.1.2009, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если это нативный код, и тестировал на дебаге, это очень странно.
PM MAIL ICQ   Вверх
Kallikanzarid
Дата 18.1.2009, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

Исключено!!!
В работоспособности сего инструмента убеждался не раз!!! 


Проверь еще раз:
Код

#include <stdlib.h>
int main() {
    free( malloc(123) );
}





Это сообщение отредактировал(а) Kallikanzarid - 18.1.2009, 14:42
PM MAIL   Вверх
nickless
Дата 18.1.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


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

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



Хоббит, название ОСи, версии компилятора, valgrind-а, mysql, (если *nix то еще ядра и glibc), полную строку вызова компилятора, а так же полный вывод valgrind --leak-check=full ./<прога> в студию.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Хоббит
Дата 18.1.2009, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

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



В принципе, так как нигде больше в программе память не утекает. А соединение с бд создается и уничтожается 1 раз. Отложу этот вопрос до лучших времен.
А какой еще инструмент вы можете предложить?
PM MAIL   Вверх
Хоббит
Дата 18.1.2009, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

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



Код

michael@newlook:~/develop/test/src$ uname -a
Linux newlook 2.6.18-4-k7 #1 SMP Mon Mar 26 17:57:15 UTC 2007 i686 GNU/Linux
michael@newlook:~/develop/test/src$ g++ -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --with-tune=i686 --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
michael@newlook:~/develop/test/src$ valgrind --version
valgrind-3.2.1-Debian
michael@newlook:~/develop/test/src$ ls
Makefile.am  Makefile.in  test.cpp
michael@newlook:~/develop/test/src$ g++ test.cpp
michael@newlook:~/develop/test/src$ ls
a.out  Makefile.am  Makefile.in  test.cpp
michael@newlook:~/develop/test/src$ valgrind --leak-check=full ./a.out
==4519== Memcheck, a memory error detector.
==4519== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et al.
==4519== Using LibVEX rev 1658, a library for dynamic binary translation.
==4519== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP.
==4519== Using valgrind-3.2.1-Debian, a dynamic binary instrumentation framework.
==4519== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et al.
==4519== For more details, rerun with: -v
==4519==
==4519==
==4519== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 17 from 1)
==4519== malloc/free: in use at exit: 0 bytes in 0 blocks.
==4519== malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
==4519== For counts of detected errors, rerun with: -v
==4519== All heap blocks were freed -- no leaks are possible.


Все сделал в командной строке. Получилось.

Добавлено @ 15:37
Компилирую в kdevelop, получаю
Код

michael@newlook:~/develop/test/debug/src$ valgrind --leak-check=full ./test
==4532== Memcheck, a memory error detector.
==4532== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et al.
==4532== Using LibVEX rev 1658, a library for dynamic binary translation.
==4532== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP.
==4532== Using valgrind-3.2.1-Debian, a dynamic binary instrumentation framework.
==4532== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et al.
==4532== For more details, rerun with: -v
==4532==
==4532==
==4532== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 17 from 1)
==4532== malloc/free: in use at exit: 1,336 bytes in 1 blocks.
==4532== malloc/free: 1 allocs, 0 frees, 1,336 bytes allocated.
==4532== For counts of detected errors, rerun with: -v
==4532== searching for pointers to 1 not-freed blocks.
==4532== checked 105,968 bytes.
==4532==
==4532== LEAK SUMMARY:
==4532==    definitely lost: 0 bytes in 0 blocks.
==4532==      possibly lost: 0 bytes in 0 blocks.
==4532==    still reachable: 1,336 bytes in 1 blocks.
==4532==         suppressed: 0 bytes in 0 blocks.
==4532== Reachable blocks (those to which a pointer was found) are not shown.
==4532== To see them, rerun with: --show-reachable=yes
Profiling timer expired



Добавлено @ 15:39
Параметры компиляции kdevelop все по умолчанию, ничего не менял
Код

Код

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    
    return EXIT_SUCCESS;
}


nickless натолкнул на интересную мысль, выходит все дело в том как kdevelop компилирует файлы

Это сообщение отредактировал(а) Хоббит - 18.1.2009, 15:39
PM MAIL   Вверх
MAKCim
Дата 18.1.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


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

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



Цитата(vinter @  18.1.2009,  12:33 Найти цитируемый пост)
может проблема в тупости сего инструмента? 

это ты зря
более полезного инструмента я не видел
а для поиска memory leak'ов он просто незаменимый


Хоббит
добавь
--show-reachable=yes

в твоем случае утечек нет
reachable блоки вполне могут аллоцироваться без последующего удаления
если используется принцип "завершение программы - есть освобождение ресурсов"

Добавлено через 5 минут и 2 секунды
Цитата(Kallikanzarid @  18.1.2009,  14:38 Найти цитируемый пост)
Проверь еще раз:

ну я проверил
и что?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

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


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

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



Цитата(MAKCim @  18.1.2009,  16:43 Найти цитируемый пост)
это ты зря

я просто предположил, до сегодняшнего дня я и не подозревал о нем smile
Просто используя compuware bound checker я с таким не сталкивался


--------------------
Мой блог
PM MAIL WWW   Вверх
Dem_max
Дата 18.1.2009, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

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



Попробуй Spy++ из Visual Studio, я сам лично не пользовался но говорят мощная штука. 


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Хоббит
Дата 18.1.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

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



linux
PM MAIL   Вверх
mes
Дата 18.1.2009, 17:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



 smile название темы  прочно вызывает ассоциации с одной песенкой.. 
Куда уходит память
В какие города
И где найти нам средство  
Чтоб вновь вернуть сюда smile 
http://www.karaoke.ru/song/941.htm

Это сообщение отредактировал(а) mes - 18.1.2009, 17:46


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


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



mes, Кому - Что  smile  smile

Добавлено через 46 секунд
Цитата(Kallikanzarid @ 18.1.2009,  14:38)
Цитата

Исключено!!!
В работоспособности сего инструмента убеждался не раз!!! 


Проверь еще раз:
Код

#include <stdlib.h>
int main() {
    free( malloc(123) );
}


И...?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0992 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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