Re: Динамический массив???
От: Alex  
Дата: 25.09.01 17:55
Оценка:
Здравствуйте Lozovoy, вы писали:

L>Подскажите плз.Как создать динамический массив ?


L>Заранее спасибо.


1.----------------
Есть ещё один способ, не перечисленный выше — это конструкция из malloc/realloc/free, например:

struct TMyStruct
{
int ID;
int Number;
};

TMyStruct* Array=0;
int ArraySize=5;

//создаём массив структур
//malloc выделит необходимое количество динамической памяти, надо помнить что она не инициализирует её!!
Array=(TMyStruct*)malloc(sizeof(TMyStruct)*ArraySize);

//обращение к массиву
Array[0]=Array[2];
Array[3].ID=7;

//изменения размера массива
//при этом, все данные в массиве сохраняются (т.е. первые пять элементов останутся не изменными)
ArraySize=20;
Array=(TMyStruct*)realloc(Array, sizeof(TMyStruct)*ArraySize);

//какие то операции с массивом

//удаление массива
free(Array);

2.------------------
//вот в принципе и всё, хотя функцией realloc можно заменить функции free и malloc, выглядит это так (пример 2):

TMyStruct* Array=0;
int ArraySize=5;

//создаём массив структур
Array=(TMyStruct*)realloc(Array, sizeof(TMyStruct)*ArraySize);

//изменения размера массива
ArraySize=20;
Array=(TMyStruct*)realloc(Array, sizeof(TMyStruct)*ArraySize);

//удаление массива
ArraySize=0;
Array=(TMyStruct*)realloc(Array, sizeof(TMyStruct)*ArraySize);

Может пригодится.
С уважением!
Алексей.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.