I'm teaching myself C, and I do not understand why the following code do not break with a segmentation fault.
printf("loading \n");
conn->db = malloc(sizeof(struct Database));
int rc = fread(&conn->db->max_rows,sizeof(int) , 1, conn->file);
rc = fread(&conn->db->max_data,sizeof(int) , 1, conn->file);
conn->db->rows = malloc(Get_address_size(conn) * conn->db->max_rows);
printf("address size is : %d\n", Get_address_size(conn));
int i;
struct Address * r = conn->db->rows;
for (i = 0; i < conn->db->max_rows; i++)
{
rc = fread(&r->id, sizeof(int) , 1, conn->file);
rc = fread(&r->set, sizeof(int) , 1, conn->file);
r->name = malloc(conn->db->max_data);
r->email = malloc(conn->db->max_data);
rc = fread(r->name, conn->db->max_data , 1, conn->file);
rc = fread(r->email, conn->db->max_data , 1, conn->file);
r = r++;
}
r=r+100;
printf(here I'm trying to break my code %d\n",r->id);
if (rc != 1) die("Failed to load database.");
the Get_address_size function is just a wrapper around
sizeof(struct Address)