Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 4

Найти утечки памяти

07.12.2013, 13:54. Показов 691. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста найти утечки памяти!
Задача: Сравнить идентичны ли две статичные строки. Сравнивать нужно, игнорируя заглавные и маленькие буквы. "Валгринд" находит эти утечки, но сижу, бьюсь над кодом, не могу найти.

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#ifndef __PROGTEST__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#endif /* __PROGTEST__ */
 
int Read_String(const char * a, const char * b)
{
    char *word = NULL;
    int pre_word = 0;
    int Len = 0;
    int word_Len = 0;
    int i;
 
        if ((strlen(a) == 0) && (strlen(b) == 0))
            {
                return 1;
            }
        i = 0;
        while(1)
            {
                if (i >= word_Len)
                    {
                        word_Len += 250;
                        word = (char*)malloc(word_Len*sizeof(char));
                    }
                    if (isalpha(a[i]))
                        {
                            if(!isalpha(pre_word))
                                {
                                    Len = 0;
                                }
                                if (Len < 80)
                                    {
                                        word[Len++] = tolower(a[i]);
                                    }
                        }
                     else
                        {
                         if (Len > 0)
                            {
                               word[Len] = '\0';
                                  if (strstr(b,word) == NULL)
                                     {
                                        return 0;
                                     }
                                Len = 0;
                            }
                        }
                     if (a[i] == '\0')
                            {
                                break;
                            }
                    pre_word = tolower(a[i++]);
            }
    free(word);
    return 1;
}
 
int sameWords( const char * a, const char * b)
{
    unsigned int i = 0, j = 0;
    char * array1 = (char*)malloc((strlen(a)+1));
    char * array2 = (char*)malloc(strlen(b));
 
    strcpy(array1,a);
    strcpy(array2,b);
        for (i=0; i < strlen(array1); i++)
            {
                array1[i] = tolower(array1[i]);
            }
        for (j=0; j < strlen(array2); j++)
            {
                array2[j] = tolower(array2[j]);
            }
            if (Read_String(a, array2) == 0)
                {
                    free(array2);
                    return 0;
                }
             if (Read_String(b, array1) == 0)
                {
                    free(array1);
                    return 0;
                }
        free(array1);
        free(array2);
        return 1;
}
 
#ifndef __PROGTEST__
int main ( int argc, char * argv [] )
{
    int res = 0;
        res = sameWords ( "Hello students.", "HELLO studEnts!" );
  printf("%d", res);
      /* res = 1 */
 
//    res = sameWords ( " He said 'hello!'", "'Hello.' he   said." );
//    printf("%d", res);
      /* res = 1 */
 
//    res = sameWords ( "He said he would do it.", "IT said: 'He would do it.'" );
//    printf("%d", res);
      /* res = 1 */
 
//    res = sameWords ( "one two three", "one two five" );
//    printf("%d", res);
      /* res = 0 */
 
    return 0;
}
#endif /* __PROGTEST__ */
Вложения
Тип файла: txt same_Words_prog.txt (3.2 Кб, 3 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.12.2013, 13:54
Ответы с готовыми решениями:

Утечки при работе с динамической памятью
Здравствуйте, отправляю задачу на сервер, пишут:&quot;Утечки памяти&quot;. Для входных данных: 3 Вот код: #include &lt;stdio.h&gt; #include...

Ошибка: Утечки памяти Как исправить?
Вот задача: Составьте программу primediv.c, вычисляющую наибольший простой делитель некоторого числа x. Число x вводится со стандартного...

Найти причину утечки памяти и устранить ее
Здравствуйте. Возник вопрос: как ликвидировать утечку памяти (в течение работы программы одно только многократное нажатие на одну из кнопок...

1
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
07.12.2013, 16:04
строка 27 нужно освободить память перед тем как выделять снова(можно использовать realloc)
строка 80 не освобождается array1
строка 85 не освобождается array2
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2013, 16:04
Помогаю со студенческими работами здесь

Утечки памяти без выделения памяти?
Человек использует _CrtDumpMemoryLeaks() для отлова утечек, и обратился ко мне в сязи с тем, что есть утечка, но памяти он никому не...

Утечки памяти
Да, проблему пока не осилил ... Огромное количество модулей, массивов, классов, коллекций, разные деревья, связанные списки(основное...

Утечки памяти...
Доборого дня всем! Пишу программу, в ней есть модуль получения древа каталогов. написал через FindFirstFile ... это работает. естественно...

Утечки памяти
Привет всем! Есть процедура, в которую параметрами передаются дин. массивы. Например: type TArr = array of &lt;чего-то там&gt;; ...

Утечки памяти
После запуска программы выделяемая память равномерно и постоянно растет, а со временем сама программа крашиться. Мое предположение, не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru