Hello,
The following code results in a segmentation fault when line 36 is executed
Code:
strcpy(node->summary_record->c_detail1, summary_record->c_detail1);
The malloc at line 24 is successful
Code:
summary_t *node = malloc(sizeof(summary_t) * 1);
and lines 34 and 35 are also successful
Code:
node->prev = NULL;
node->next = NULL
I'm guessing that the issue must be this line
Code:
summary_t *node = malloc(sizeof(summary_t) * 1);
And that the is not allocating the memory for the .
But if I'm correct, I don't know why this is happening or how to resolve?
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct record
{
char c_detail1[15];
char c_detail2[100];
float f_value1;
float f_value2;
} summary_record_t;
typedef struct summary
{
summary_record_t *summary_record;
struct summary_t *prev;
struct summary_t *next;
} summary_t;
summary_t *add_at(int pos, summary_t *summary_list, summary_record_t *summary_record)
{
summary_t *node = malloc(sizeof(summary_t) * 1);
if (node == NULL)
{
printf("malloc failed\n");
}
else
{
printf("malloc succeeded\n");
}
node->prev = NULL;
node->next = NULL;
strcpy(node->summary_record->c_detail1, summary_record->c_detail1);
strcpy(node->summary_record->c_detail2, summary_record->c_detail2);
node->summary_record->f_value1 = summary_record->f_value1;
node->summary_record->f_value2 = summary_record->f_value2;
}
summary_t *add_end(summary_t *summary_list, summary_record_t *summary_record)
{
add_at(-1, summary_list, summary_record);
return;
}
int main()
{
summary_t *summary_list = malloc(sizeof(summary_t) * 1);
summary_list = NULL;
summary_record_t *summary_record = malloc(sizeof(summary_record_t) * 1);
strcpy(summary_record->c_detail1,"some detail");
strcpy(summary_record->c_detail2,"another detail");
summary_record->f_value1 = 200;
summary_record->f_value2 = 250;
summary_list = add_end(summary_list,summary_record);
return 0;
}
Thanks
VW