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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
supra7sky
15 / 15 / 1
Регистрация: 07.02.2013
Сообщений: 123
#1

Странный код в лабе (динам. масиивы) - C++

19.04.2013, 00:51. Просмотров 267. Ответов 3
Метки нет (Все метки)

Разве там не должен быть выход за пределы выделенной области?

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
class Action : public MyArr
{
    int *ptrnew;
    //float *fptrnew;
    int index;
public:
    Action(int how_mh, int init);
    void addelement(int num);
};
void Action::addelement(int num)
{
    int i;
    int *ptrnew;
    if(size != 0) index = size;
    ptrnew = new int(size+1); // выд. памяти под объект int со значением size+1
    if(!ptrnew) exit(1);
    for (i = 0; i < index; i++)
        ptrnew[i] = shownum(i); // Как здесь может быть индексация?
    ptrnew[index] = num;
    if (setnewarr(size+1))
        for (i = 0; i <= index; i++)
            setnum(i, ptrnew[i]);
    size++;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2013, 00:51     Странный код в лабе (динам. масиивы)
Посмотрите здесь:

Странный код - C++
Почему такой код верен time_t start, end; start = time(NULL); if (start == (time_t) - 1) { cout &lt;&lt; &quot;Time is...

Странный вывод - проверьте код - C++
затестите код пжл, результат скиньте:) #include &lt;iostream&gt; using namespace std; void nn() {} void n() {} int main() { ...

Динам. массив в классе - C++
Здравствуйте, За пример брал пободный код (он работает и делает дин.массив из нолей): #include &lt;iostream&gt; using namespace std; ...

Одномерный динам массив - C++
вычислить количество элементов больших C вычислить произведение элементов расположенных после максимального по модулю элемента ...

подключение динам либ - C++
подскажите никак не пойму вот создал *.so создаю проект добавляю эту либу в иде для линковки из main.cpp вызываю функу либы и...

задача по лабе (переписать программу так, чтобы у цикла отсутствовало тело) - C++
имеется программа, которая в цикле увеличивает значение переменной i и уменьшает значение переменной j до тех пор, пока их величины не...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
457 / 306 / 24
Регистрация: 22.03.2011
Сообщений: 995
Завершенные тесты: 2
19.04.2013, 01:17     Странный код в лабе (динам. масиивы) #2
Нет. Просто код трудно читаем и грязн. Сморите внимательно:
C++
1
2
3
 if(size != 0) index = size;
 
for (i = 0; i < index; i++) // здесь число отличное от нуля
Но если это всеь код, то на каждом вызове данной функи вы будете терять (size + 1) * 4 байт памяти. А проще говоря жесткий мемори лик. + Нет контроля освобождения.
Croessmah
Модератор
Эксперт CЭксперт С++
13053 / 7316 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
20.04.2013, 19:53     Странный код в лабе (динам. масиивы) #3
C++
1
ptrnew = new int(size+1); // выд. памяти под объект int со значением size+1
Здесь не одна ошибка. Выделяем памяти под один элемент, а используем как массив:
C++
1
2
for (i = 0; i < index; i++)
   ptrnew[i] = shownum(i); // Как здесь может быть индексация?

C++
1
if(!ptrnew) exit(1);
new кидает исключение, так что до сюда не дойдет в случае чего

Цитата Сообщение от stima Посмотреть сообщение
(size + 1) * 4 байт памяти.
С чего бы это? утечка памяти размером в sizeof(int) при каждом вызове
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2013, 20:17     Странный код в лабе (динам. масиивы)
Еще ссылки по теме:

Динам. память, указатели, строки - C++
хелп) а то не успеваю все решить))) Задание 2 Написать программу которая позволяет пользователю ввести любое количество целых чисел,...

Реализация разбиения числа с Динам. Прогр - C++
Доброго времени суток. Нужна помощь: как с помощью динамического программирования реализовать решение такой вот задачи: &quot;найти...

Правильное чтение символов в динам. массив - C++
Ошибка скорей всего в синтаксисе. Если надо, могу и все исходники выложить хэдэр class Cow { public: const static int lenght = 20;...

Перегрузка индексации двумерного динам. массива - C++
решил реализовать такое: обращение к эл-ту двумерного массива происходит следующим образом а, я решил перегрузить чтобы обращаться к...


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

Или воспользуйтесь поиском по форуму:
stima
457 / 306 / 24
Регистрация: 22.03.2011
Сообщений: 995
Завершенные тесты: 2
20.04.2013, 20:17     Странный код в лабе (динам. масиивы) #4
Цитата Сообщение от Croessmah Посмотреть сообщение
Сообщение от stima
(size + 1) * 4 байт памяти.
С чего бы это? утечка памяти размером в sizeof(int) при каждом вызове
Согласен), поздно было привиделось new int[]
Yandex
Объявления
20.04.2013, 20:17     Странный код в лабе (динам. масиивы)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru