|
Динамический массив структур, Создание / удаление |
|
|
|
May 5 2009, 09:25
|
Участник

Группа: Новичок
Сообщений: 21
Регистрация: 9-01-09
Пользователь №: 43 070

|
К примеру у меня есть структура и я хочу работать с динамическим массивом, правильно ли будет: Код typedef struct { DWORD Debug; char *Oerr; char Oerr_num; WORD Data_FC; char Nfunc; } SProba; ... int num = 3; SProba *dat = (SProba*) malloc(sizeof(SProba) * num); SProba *elem = &dat[1]; elem->Oerr = (char*) malloc(10); .... for(i = 0; i < num; i++) free(dat[i]->Oerr; free(dat);
|
|
|
|
|
 |
Ответов
|
May 6 2009, 08:28
|
Участник

Группа: Новичок
Сообщений: 21
Регистрация: 9-01-09
Пользователь №: 43 070

|
у меня ещё вопрос возник по части объема, которая занимает структура. Есть, к примеру, структура: Код typedef struct { long *Debug; char Nfunc; } SGfuncBAK; Показывает, что 8 байт, 4 понятно на указатель, а куда ещё 4, а не 1? или там выравнивание?
|
|
|
|
|
May 6 2009, 10:25
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Если мы(Вы) имеем дело с С99 и gnu99, можно смело отменять выравнивание и пользоваться типами uint_fast**_t . Имхо, вручную проконтролировать оптимальное выравнивание гораздо лучше, чем потом носиться с прагмами и ком.строкой от компилера к компилеру. Тогда Цитата(Палыч @ May 6 2009, 12:07)  Выравнивание. Обычно его можно уменьшить с потерей скорости доступа, но не на всех платформах. приобретет другой смысл, а именно: выравнивание на разных платформах будет разным, без потери скорости доступа. Разумеется, для ввода/вывода за пределы системы, надо придерживаться детерминированных размеров, т.е. применять типы uint_**_t
|
|
|
|
Сообщений в этой теме
YChebisheva Динамический массив структур May 5 2009, 09:25 Oldring Цитата(YChebisheva @ May 5 2009, 13:25) f... May 5 2009, 09:32 YChebisheva Oldring, описалась. Понятно, что скобку не закрыла... May 5 2009, 11:15 Палыч Цитата(YChebisheva @ May 5 2009, 14:15) А... May 5 2009, 11:46 Злодей Простите, а разве нельзя? Типа было под него выдел... May 5 2009, 12:05 Палыч Цитата(Злодей @ May 5 2009, 15:05) интере... May 5 2009, 12:28 Сергей Борщ Цитата(Злодей @ May 5 2009, 15:05) Прости... May 5 2009, 13:14 _Pasha Цитата(YChebisheva @ May 5 2009, 12:25) К... May 5 2009, 13:22 Палыч Цитата(_Pasha @ May 5 2009, 16:22) но тол... May 5 2009, 13:31  _Pasha Цитата(Палыч @ May 5 2009, 16:31) Разве m... May 5 2009, 15:07 YChebisheva Ребята это я виновата, Вас всех запутала.
Понятно,... May 5 2009, 14:02 Палыч Цитата(YChebisheva @ May 5 2009, 17:02) М... May 5 2009, 14:17 YChebisheva Как понимаю особой разницы malloc и calloc нет, пр... May 6 2009, 06:31 _Pasha Цитата(YChebisheva @ May 6 2009, 09:31)
... May 6 2009, 06:35   zltigo Цитата(_Pasha @ May 6 2009, 13:25) Если м... May 6 2009, 10:54    _Pasha Цитата(zltigo @ May 6 2009, 13:54) fast, ... May 6 2009, 15:13 Злодей Здесь сказано: ЦитатаРазмер структуры выравниваетс... May 6 2009, 09:50 YChebisheva А как определить, какой у меня компилятор, если пи... May 6 2009, 10:47 YChebisheva с типами разобралась.
А может лучше объявить всю с... May 6 2009, 12:04 zltigo Цитата(YChebisheva @ May 6 2009, 14:56) А... May 6 2009, 12:09 YChebisheva .
А как определить, какой у меня компилятор, если... May 6 2009, 12:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|