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

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

Войти
Регистрация
Восстановить пароль
 
nicenice
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 168
#1

Динамическое выделение памяти под массив - C++

22.03.2014, 13:55. Просмотров 503. Ответов 5
Метки нет (Все метки)

Доброго времени суток.
Как реализовать динамическое выделение памяти под массив, к примеру размера n, при том, что значение этого n в процессе вычисления увеличится? Т. е. выделяется память под массив, но её скорее всего не хватит, насколько именно не хватит неизвестно, известно, что n нужно увеличить на неопределенное значение.
Для наглядности написал пример, не стоит вникать в его логическую адекватность.
C++
1
2
3
4
5
6
7
8
9
void function (int n, int x)
{
    double* y = new double [n];
 
    for(int i=0;i<n;++i){
        y[i] = sin(x+i);
        if(y[i] == 1) n *= 2;
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2014, 13:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамическое выделение памяти под массив (C++):

Динамическое выделение памяти под массив - C++
Я хочу функцию использовать пару раз, количество команд будет уменьшаться, и &quot;n&quot; надо менять. Как написать не знаю. 12 или 13 строка. ...

Динамическое выделение памяти под двумерный массив - C++
1) Ввести построчно элементы двумерного массива чисел. Количество столбцов задается. Количество строк (не менее 1) равно максимальному по...

Динамическое выделение памяти под массив int - C++
плиз хелп Написать функцию getPrimes, которая принимает массив типа int и его размер. Функция должна вернуть указатель на новый...

Динамическое выделение памяти под двумерный массив - C++
Здравствуйте. Как мне правильно и грамотно (!) выделять память под двумерные массивы? Откуда возникла необходимость — хотел сделать...

Динамическое выделение памяти под двумерный массив - C++
Нужно написать программу, динамически выделяем память под двумерный массив, функции ввода-вывода, функцию, которая будет складывать 2...

Динамическое выделение памяти под массив структур (new/delete) - C++
Люди добрые, подскажите пожалуйста, где в моем коде закралась ошибка? Интернет перечитал, во всех примерах код, подобный моему работает, а...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MicM
822 / 489 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
22.03.2014, 13:58 #2
Цитата Сообщение от nicenice Посмотреть сообщение
Как реализовать динамическое выделение памяти под массив, к примеру размера n, при том, что значение этого n в процессе вычисления увеличится?
Удалять старый массив и выделять память под новый, уже другого размера.
0
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
22.03.2014, 14:00 #3
nicenice, когда начнет не хватать, выделяешь больший кусок памяти, копируешь туда все из старой памяти, и освобождай старую память. Так (упрощенно) работают стандартные контейнеры vector, map, deque, ...
И еще не забываем о placement new.
0
nicenice
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 168
22.03.2014, 14:01  [ТС] #4
MicM, я это понимаю, но КАК это сделать? Вот, например, в приведенном мною коде.
gromo, ок, продемонстрировать это в моем примере?
0
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
22.03.2014, 14:10 #5
Вариант еще есть, malloc/free..А переопределение с помощью realloc
0
MicM
822 / 489 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
22.03.2014, 14:20 #6
nicenice, так например
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void function (int n, int x)
{
    double* y = new double [n];
 
    for(int i=0;i<n;++i)
    {
        y[i] = sin(x+i);
        if(y[i] == 1)
        {
            double *tmp = new double[n];
            for (int j=0; j<n; j++)
                tmp[j] = y[j];
            n*=2;
            delete [] y;
            y = new double[n];
            for (int j=0; j<n/2; j++)
                y[j] = tmp[j];
            delete [] tmp;
        }
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2014, 14:20
Привет! Вот еще темы с ответами:

Динамическое выделение памяти под структуру - C++
#include &lt;iostream&gt; using namespace std; struct person { char*name; char *adres; int age; }; void allocation (person *mas,...

Динамическое выделение памяти под объект - C++
Здравствуйте, меня интересует несколько вопросов по поводу конструкции new. Есть такой код: struct element { std::string...

Динамическое выделение памяти под строки - C++
Доброго времени суток. Изучаю основы C++, дошел до раздела &quot;указатели и динамическое выделение памяти&quot;. Имеется код, в котором...

Динамическое выделение памяти под объект класса - C++
Помогите динамически выделить память под объект класса.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.03.2014, 14:20
Ответ Создать тему
Опции темы

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