0 / 0 / 0
Регистрация: 02.11.2018
Сообщений: 2
1

Проблема с realloc

02.11.2018, 01:58. Показов 709. Ответов 3

Добрый вечер! Срабатывает точка останова в строчке 17.
Никак не могу найти ошибку. Что ему не нравится? Подскажите, пожалуйста, в чём косяк)

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
template <typename TElement>
void ArraySequence<TElement>::Append(TElement item) {
    if (getLength() == 0) {
        realloc(currentArr, 2);
        currentArr[0] = item;
        currentAmount++;
    }
    else {
        TElement *newArr = new TElement[getLength() + 1];
        for (int i = 0; i < getLength(); i++)
            newArr[i] = currentArr[i];
        newArr[getLength()] = item;
        
        TElement a = newArr[getLength()];
        currentAmount++;
        
        realloc(currentArr,( currentAmount + 1)*sizeof(TElement));
 
        for (int i = 0; i < getLength(); i++)
            currentArr[i] = newArr[i];
        
    }
 
    changeCondition(0);
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2018, 01:58
Ответы с готовыми решениями:

Проблема с realloc
22 строчка выделение памяти через realloc, 3 первых прокрутки цикла работают, а дальше все...

realloc
здраствуйте! решил накатать такой класс #include &lt;stdlib.h&gt; template &lt;typename TYPE&gt; ...

realloc
Столкнулся с проблемой при значениях nStgElm близких к 1000 происходит ошибка выеления памяти...

realloc
#include &lt;iostream&gt; using namespace std; int main() { int size=0; cout&lt;&lt;&quot;enter size array:...

3
Диссидент
Эксперт C
26975 / 16849 / 3707
Регистрация: 24.12.2010
Сообщений: 37,848
02.11.2018, 09:14 2
Neprincessa, проблема realloc-а только что обсуждалась
Что не так с realloc?
Смысл обсуждения в том, что realloc возвращает значение не зря
C++
1
2
3
currentArr = realloc(currentArr, 2);
...
currentArr = realloc(currentArr,( currentAmount + 1)*sizeof(TElement));
0
0 / 0 / 0
Регистрация: 02.11.2018
Сообщений: 2
06.11.2018, 01:26  [ТС] 3
почитала еще статьи, переделала. Выделила +2, стало все норм. Хотя странно, потому что мне требуется максимум на один элемент больше, не на два... Но заработало.
Спасибо за ответ!
0
Диссидент
Эксперт C
26975 / 16849 / 3707
Регистрация: 24.12.2010
Сообщений: 37,848
06.11.2018, 09:45 4
Цитата Сообщение от Neprincessa Посмотреть сообщение
Хотя странно
Трудно что-то сказать, так как не очень понятно, что такое currentAmount и чему он равен в самом начале.
Но хочется заметить немного вбок от темы. Выделение памяти - операция довольно дорогая. Поэтому обычно ее выделяют порциями. Скажем по 10 или 20 элементов. Заводят 2 счетчика. Для выделенной и использованной памяти. И когда использованная сравняется с выделенной а нужно еще, выделяют еще кусок. Примерно так работает <vector>
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2018, 09:45
Помогаю со студенческими работами здесь

Realloc
Программа должна забивать массив command_comblock символами 'p', но она почему-то не выполняет...

realloc
Доброго времени суток, есть код, в котором динамически выделяется память под массив, затем этот...

Realloc в функции
Есть функция void read_line(char *adress) { char temp = '1'; unsigned long long int...

Realloc и цикл
Здравствуйте, у меня возникает проблема с этой функцией когда поступают на вход равные n n2. На...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru