Thanks for everyone's help so far, im working on using realloc instead of malloc. So far this is what I have but I get a segmentation fault when I try to add an item with my function add_vhost.
Code:
typedef struct _vhost vhost;
struct _vhost
{
char group_id[12];
char host[100];
};
static int vhost_count = 0;
static vhost *vhost_list;
void add_vhost(vhost **item_list, vhost item)
{
*item_list = realloc(vhost_list, (vhost_count * sizeof(vhost)) + sizeof(vhost));
*item_list[vhost_count] = item; // Segmentation fault happens here
}
int main()
{
vhost tmp_vhost1;
strcpy(tmp_vhost1.group_id, "-487554");
strcpy(tmp_vhost1.host, "omg.com");
vhost_list = realloc(vhost_list, (vhost_count * sizeof(vhost)) + sizeof(vhost));
vhost_list[vhost_count] = tmp_vhost1;
vhost_count++;
vhost tmp_vhost2;
strcpy(tmp_vhost2.group_id, "874481");
strcpy(tmp_vhost2.host, "something.net");
vhost_list = realloc(vhost_list, (vhost_count * sizeof(vhost)) + sizeof(vhost));
vhost_list[vhost_count] = tmp_vhost2;
vhost_count++;
vhost tmp_vhost3;
strcpy(tmp_vhost3.group_id, "16547");
strcpy(tmp_vhost3.host, "zoom.org");
add_vhost(&vhost_list, tmp_vhost3); // Something bad happens
vhost_count++;
int x;
for(x = 0; x < vhost_count; x++)
{
printf("%s\n", vhost_list[x].host);
}
}
BTW, I'm not using c++ because this is a module I am writing for another application that is written in c.