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

free - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ WTL и Visual Studio 2010 http://www.cyberforum.ru/cpp-beginners/thread997327.html
Доброго времени суток. Мне нужно использовать WTL в MSVS 2010. Для 2008-й студии проблем нет, а вот с 2010 разобраться не могу. Кто может подсказать, как все это дело установить? Добавлено через...
C++ Не могу разобраться со строками Всем привет. Нужно написать прогу, которая ищет введенное слово в текстовом файле и выводит на экран все предложения содержащие это слово. Я не могу выполнить ввод этого слова, у меня есть примерный... http://www.cyberforum.ru/cpp-beginners/thread997324.html
C++ как сложить 2 массива
Всем добрый день. На днях начал потихоньку изучать с++, так что знаний по нему пока очень мало) Решил попробовать написать программку, которая из файла брала бы размерность массива, затем читала сам...
C++ Определить минимальное значение функции на интервале
На интервале с точностью e(e>0) определить значение одного корня уравнения cos(2/x)*sin(x)+1=0 Определить минимальное значение функции на интервале . Реализовать диалог. Поиск корня уравнения...
C++ Рассчитать переходную функция http://www.cyberforum.ru/cpp-beginners/thread997310.html
Рассчитать переходную функцию интегродифференцированного звена первого порядка системы автоматического управления (САУ) по формуле: h(t)=B0 (I-L-t/a1)+ B1/ a1 * L-t/a1 в интервале от t=0 к t=10...
C++ Launcher WOW Здравствуйте всем! Помогите мне пожалуйста. Я создал Лаунчер через VB 2010 Сервер как (WOW) как сделать чтобы (когда заходишь через лаунчер на сервер, коннектился через Launcher) какой нужен... подробнее

Показать сообщение отдельно
VeNick
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 5

free - C++

04.11.2013, 11:55. Просмотров 539. Ответов 5
Метки (Все метки)

Выделил память под массив(строку), размером 5 элементов.
C++
1
2
3
4
5
6
7
    char *str;
    str = (char*)calloc(5,sizeof(char));
    if (str == NULL)
    {
        cout<<"ERROR"<<endl;
        exit(1);
    }
По мере ввода строки, выделяется дополнительная память.
realloc может возвратить указатель на новую область памяти, поэтому старую нужно очистить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    int i;
    char simvol;
    char *strold;
    for (i = 0; (simvol = getchar()) != '\n'; i++)
    {
        if (i%5 == 0  && i != 0)
            {
                strold = str;
                str = (char*)realloc(str, (i+5)*sizeof(char));
                if (str == NULL)
                {
                    cout<<"ERROR"<<endl;
                    exit(1);        
                }
                if(strold != str)
                    free(strold);
            }
        str[i] = simvol;
    }
С помощью отладочных печатей, обнаружил, что ошибка возникает в строчке
C++
1
free(strold);
Что-то там про кучу...
Помогите разобраться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru