Re: Правильно ли используется выделение памяти и пользование
От: Андрей Тарасевич Беларусь  
Дата: 18.11.06 09:09
Оценка:
Здравствуйте, vis1979, Вы писали:

V>Уважаемые мастера! просветите пожалуйста все ли правильно я делаю, и если нет укажите наошибки:


Ну раз уж ты сам просишь: "на ошибки" пишется раздельно

V>Есть Функция

V>void * TimerAdd(набор параметров)
V>{ 
V> struct TimerStruct * tempTimerEl = (struct TimerStruct *) malloc (sizeof(struct TimerStruct));
V> ...
V> тело функции
V> ...
V> return tempTimerEl;
V>}


Это, похоже, именно С... Если это именно C, то

...
  struct TimerStruct* tempTimerEl = malloc(sizeof *tempTimerEl);
...


Т.е. во-первых, никакого приведения типа не надо, и, во-вторых, 'sizeof' лучше натравить на указатель-получатель, а не на тип.

Не понятно почему тип возврата — 'void*', а не 'struct TimerStruct*'.

V>далее определяется массив (подразумевается массив указателей на void)

V> void ** TimerKLZ;

V>выделяется память под массив указателей на void

V>if (CountKLZ > 0)
V> if ((TimerKLZ= (void **) malloc(sizeof(void *)*CountKLZ))==NULL)
V> {
V>  free(Data);
V>  return 0;
V> }


Опять же

...
  if ((TimerKLZ = malloc(CountKLZ * sizeof *TimerKLZ)) == NULL)
...


V>и далее собственно вызов и присвоение

V> for (i=0; i<CountKLZ; i++)
V> {
V> TimerKLZ[i]=TimerAdd(параметры);
V> }

По-прежнему не понятно, почему массив именно 'void*'-ов...
Best regards,
Андрей Тарасевич
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.