распределение памяти

Модератор: Модераторы разделов

Аватара пользователя
krivakin
Сообщения: 117
ОС: Debian 4.0

распределение памяти

Сообщение krivakin »

Предположим я создал массив таким способом:

double *ptd;
ptd=(double *) malloc(2 * sizeof (double));
ptd[0]=4;
ptd[1]=3;

Что мне теперь необходимо сделать, что бы массив ptd содержал 5 элементов, но при этом сохранить значение ptd[0], ptd[1]?
Спасибо сказали:
Аватара пользователя
krivakin
Сообщения: 117
ОС: Debian 4.0

Re: распределение памяти

Сообщение krivakin »

А еще как с помощью malloc создать многомерный массив?
Спасибо сказали:
Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

Re: распределение памяти

Сообщение Shura »

1. Создаем новый массив, копируем туда значения из старого. Как вариант - пользовать realloc, только обязательно прочти документацию. Если можешь использовать С++, то пользуй std::vector, а про malloc забудь.
2.

Код: Выделить всё

static int X=10,Y=10;
double **ptr;
*ptr=malloc(X*sizeof(double*));
for(int i=o;i<X;i++)
   ptr[i]=malloc(Y*sizeof(douvle*));
Rock'n'roll мертв © БГ
Спасибо сказали:
MedVed
Сообщения: 112

Re: распределение памяти

Сообщение MedVed »

Еще можно так:

#define ROWS 2
#define COLS 3
double *mass = (double *)malloc(ROWS*COLS*sizeof(double))
// А дальше, для доступа к элементу mass[row][col] (нумерация с 0)
*(mass+row*COLS+col-1) = bla-bla;

/* А вообще, если собираешься кодить на С (тем паче под никс),
очень полезно будет почитать соответсвующую класику.
В любой институтской библиотеке можно отрыть
старые книги примерно 90-х годов. (Ричи, С для СЭВМ и т.п.) */
МСВС 3.0/Linux Mandrake 8.0
Спасибо сказали:
TwisT
Сообщения: 265
ОС: Debian

Re: распределение памяти

Сообщение TwisT »

А может лучше не массивами а список сделать, проще (по моему) менять размер.
Linux user #432536.
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: распределение памяти

Сообщение Zeus »

TwisT писал(а):
12.01.2006 10:41
А может лучше не массивами а список сделать, проще (по моему) менять размер.

А может ему произвольный доступ нужен.
На С++ нужно std::vector юзать и не изобретать велосипед.
Ну а про С уже рассказали.
Спасибо сказали: