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

Почему valgrind показывает утечку? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Компиляция проекта в gcc http://www.cyberforum.ru/cpp/thread1417206.html
Здравствуйте, форумчане! Прошу помочь разобраться! Есть программа, представленная в 3х файлах. В первом содержится описание класса (lin.h). Второй содержит описание функций этого класса (lin.cc) А третий саму программу (main.cc) Никак не получается собрать эти при файла в gcc, выдает ошибки как только не пробовал. Подскажите какая правильная последовательность компиляции, пожалуйста!
C++ Разработка ПО для блока управления сканером Дали задание для курсовой работы, но не могу понять как это сделать. Разработать ПО на С++ для блока управления сканером. Дали шаговый двигатель. Как я понял одна программа работает на компьютере, ловит нажатия клавиш и отправляет специальные команды в com-порт. Надо чтоб две кнопки вращали двигатель в разные стороны, плюс копка запуска. Кто сможет хотя бы чем нибудь помочь, буду рад помощи.... http://www.cyberforum.ru/cpp/thread1417098.html
Нужен скрипт, чтобы проверить email на схожесть C++
Доброе время суток. Создаю тему в данном разделе, поскольку мой вопрос можно отнести к разным языкам как думаю. Задача проста, но для несведущего в программировании сложна. Есть база данных email, база большая, несколько десятков тысяч. Так вот попадаются порой схожие email, например: c.h.e.a.po.akl.e.y.s.ou.t.l.et.au@gmail.com c.hea.poa.kleysu.nglass.esa.us.ale@gmail.com...
Изменение прав доступа к сервису C++
char c = "/K sc sdset \"My Sample Service\" D:(A;;RPWPDT;;; AU)(A;;CCLCSWRPWPDTLOCRRC;;; SY)(A;; CCDCLCSWRPWPDTLOCRSDRCWDWO;;; BA)(A;; CCRC;;; IU)(A;; CCLCSWLOCRRC;;; SU)S:(AU; FA; CCDCLCSWRPWPDTLOCRSDRCWDWO;;; WD)"; ShellExecute(NULL, "open", "cmd.exe",c, NULL, SW_SHOW); через командную строку все работает, но вот программу не могу написать "...
C++ Как подключится к Active Directory при помощи LDAP подключения? http://www.cyberforum.ru/cpp/thread1413908.html
Нужна помощь!!! Не мог разобраться как с помощью C++ подключится к Active Directory по средствам LDAP подключения, и осуществить вывод св-в пользователя!!!
C++ Запуск метода класса в новом потоке Здравствуйте, у меня есть класс, в нём функция - необходимо вызвать эту функцию в нескольких потоках, возможно ли это? подробнее

Показать сообщение отдельно
ZZZZZZZZ
3 / 3 / 1
Регистрация: 25.12.2012
Сообщений: 51

Почему valgrind показывает утечку? - C++

12.04.2015, 23:05. Просмотров 434. Ответов 6
Метки (Все метки)

Добрый вечер,
Вот кусочек шаблона и чуть-чуть функции main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
template < size_t precision_T, size_t base_T >
class BigFloat {
  public:
    BigFloat(const char *source);
    ~BigFloat();
  private:
    int *buf_;
    int *exp_;
    int findNum(const char symbol);
};
 
template < size_t precision_T, size_t base_T >
int BigFloat< precision_T, base_T >::findNum(const char symbol) {
  char reg[] = {'0','1','2','3','4','5','6','7','8','9'};
  int j = 0;
  while (symbol != reg[j] && j < 10) {
    j++;
  }
  if (j == 10)
    assert(!"Unknown character!");
  return j;
}
 
template < size_t precision_T, size_t base_T >
BigFloat< precision_T, base_T >::BigFloat(const char *source) :
  end_of_number_(0),
  buf_(new int[precision_T]),
  exp_(new int[precision_T])
{
  int length = strlen(source);
  int k = 0;
  while (source[k] != '.' && k < length) {
    exp_[0] *= base_T;
    exp_[0] += findNum(source[k]);
    k++;
  }
  length--;
  for (int i = k; i < precision_T; i++) {
    exp_[i] = 0;
    buf_[i] = 0;
    if (i < length) {
      k++;
      if (i != 0)
        exp_[i] = findNum(source[k]);
      end_of_number_ = i;
    }
  }
}
 
template < size_t precision_T, size_t base_T >
BigFloat< precision_T ,base_T >::~BigFloat() {
  delete [] exp_;
  delete [] buf_;
  exp_ = NULL;
  buf_ = NULL;
  end_of_number_ = 0;
}
 
int main() {
  BigFloat<10,10> *sqrt2 = new BigFloat<10,10>("1.4142");
  sqrt2->~BigFloat();
}
Вроде как я уничтожаю объект класса, и вроде как освобождаю всю память, которую я использовал, но valgrind говорит вот что.
==8350== Memcheck, a memory error detector
==8350== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==8350== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info
==8350== Command: ./v2
==8350==
==8350==
==8350== HEAP SUMMARY:
==8350== in use at exit: 24 bytes in 1 blocks
==8350== total heap usage: 3 allocs, 2 frees, 104 bytes allocated
==8350==
==8350== 24 bytes in 1 blocks are definitely lost in loss record 1 of 1
==8350== at 0x4C2B0E0: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8350== by 0x4007F1: main (v2.cpp:371)
==8350==
==8350== LEAK SUMMARY:
==8350== definitely lost: 24 bytes in 1 blocks
==8350== indirectly lost: 0 bytes in 0 blocks
==8350== possibly lost: 0 bytes in 0 blocks
==8350== still reachable: 0 bytes in 0 blocks
==8350== suppressed: 0 bytes in 0 blocks
==8350==
==8350== For counts of detected and suppressed errors, rerun with: -v
==8350== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

Не понимаю, где же, собственно утечка? Раз пишет, что 24 байта, то предполагаю, что это 3 указателя, но где?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru