Why am I getting a segmentation fault in this code ? I was attempting to initialize an array of structures.
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
struct node{
string data;
int index;
node(string data,int index):data(data),index(index){}
};
struct node **init_array(int n){
struct node **array=(struct node **)malloc(n*sizeof(struct node *));
for(int i=0;i<n;i++)
*(array+i)=NULL;
return(array);
}
struct node *init_node(string data,int index){
struct node *t=(struct node *)malloc(sizeof(struct node));
t->data=data;
t->index=index;
return(t);
}
int main(){
node **array=init_array(5);
*(array+0)=init_node("Debal",23);
*(array+1)=init_node("Debdut",24);
*(array+2)=init_node("Debojyoti",22);
*(array+3)=init_node("Ditsa",29);
*(array+4)=init_node("Divyani",10);
cout << (*(array+3))->index;
}
I was expecting the structures to be initialized with NULL.