Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

1.9K
27 февраля 2005 года
solovey
113 / / 25.07.2004
мне надо создать в программе массив, размеры которого определяются динамически:
char mas[func1()][func2()];
Ноя не понимаю, как правильно организовать распределение памяти. Помагите, чем могите:)
301
27 февраля 2005 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by solovey
мне надо создать в программе массив, размеры которого определяются динамически:
char mas[func1()][func2()];
Ноя не понимаю, как правильно организовать распределение памяти. Помагите, чем могите:)


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

 
Код:
char *mas = new char [func1()*func2()];
/*...*/
delete mas;
br /> Где width - ширина предпологаемого 2d массива.
9.3K
28 февраля 2005 года
maxrus
12 / / 28.02.2005
В стандартной библиотеке STL есть динамический массив. Это класс-контейнер vector.Все проблемы решаются одним махом - вспомним что есть STL.
#include <iostream>
#include <vector>

int main()
{
vector<int> v;
v.push_back(10);
и т.д.
}
7.9K
28 февраля 2005 года
kima
11 / / 18.11.2004
Цитата:
Originally posted by solovey
мне надо создать в программе массив, размеры которого определяются динамически:
char mas[func1()][func2()];
Ноя не понимаю, как правильно организовать распределение памяти. Помагите, чем могите:)


Действительно, чтоб обращаться к элементам массива в более удобном виде (имею ввиду такой вид mas[j], надо выделить память под двумерный массив.

Делается это так:

char ** ch = new char*[func1()];
for(int i=0; i<func1(); i++)
{
ch = new char[func2()];
}

Но после использования массива незабудь освободить память:

for(i=0; i<func1(); i++)
{
delete ch;
}
delete []ch;

1.9K
28 февраля 2005 года
solovey
113 / / 25.07.2004
Цитата:
Originally posted by kima

Действительно, чтоб обращаться к элементам массива в более удобном виде (имею ввиду такой вид mas[j], надо выделить память под двумерный массив.

Делается это так:

char ** ch = new char*[func1()];
for(int i=0; i<func1(); i++)
{
ch = new char[func2()];
}

Но после использования массива незабудь освободить память:

for(i=0; i<func1(); i++)
{
delete ch;
}
delete []ch;


спасибо, то что надо :)
PS std::vector испольлзовать нежелательно

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог