gcc 4.4.4 c89
В моем файле channel.h есть следующий код
typedef struct channel_tag channel_t;
channel_t* open_channel(size_t channel_id);
void close_channel(channel_t *channel);
И в моем файле channel.c
#include "channel.h"
struct channel_tag {
size_t channel_id;
};
channel_t* open_channel(size_t channel_id)
{
channel_t *channel = malloc(sizeof *channel);
if(channel == NULL) {
fprintf(stderr, "Cannot allocate memory\n");
return NULL;
}
channel->channel_id = channel_id;
printf("Channel [ %zu ] has been created\n", channel->channel_id);
return channel;
}
void close_channel(channel_t *channel)
{
printf("Channel [ %zu ] resources has been released\n", channel->channel_id);
free(channel);
}
Проблема с моим файлом main.c.Здесь у меня есть цикл for, который создает 5 канальных объектов и выделяет для них память.Однако, если я захочу освободить их позже в своей программе, я не уверен, как получить ссылку на них.Это только 5, с которыми я тестирую.Но позже это может быть до 300.
int main(void)
{
size_t i = 0;
channel_t *channel = NULL;
for(i = 0; i < 4; i++) {
channel = open_channel(i);
if(channel == NULL) {
fprintf(stderr, "Cannot create channel [ %zu ]\n", i);
}
}
/* Do some stuff with the channels and now free them before the program exists.
However, I need to loop and pass all of them, not just one */
for(i = 0; i < 4; i++) {
close_channel(channel);
}
return 0;
}
Большое спасибо за любые предложения,