#include <stdio.h>
typedef struct DF_COMPONENTS
{
int size;
int* element;
}COMPONENTS;
COMPONENTS * compList;
int compListNum = 3;
int totalNodes = 3;
void SearchComponent(int layer, int nodeNum, int layerNum, int * componentList, int * componentSize, int didWeCheckThisNode)
{
*componentSize = 3;
}
int main()
{
int elementNum;
int *componentList;
componentList = (int*) calloc (1,sizeof(int));
memset(componentList, 0x00, sizeof(int));
componentList[0] = totalNodes;
printf("componentList size %d\n", sizeof(int));
printf("totalNodes %d\n", totalNodes);
int *componentSize;
componentSize = (int*) calloc (1,sizeof(int));
memset(componentSize, 0x00, sizeof(int));
printf("componentSize %d\n", sizeof(int));
int layer=0;
int nodeNum=0;
int layerNum=0;
int didWeCheckThisNode=0;
SearchComponent(layer, nodeNum, layerNum, componentList, componentSize, didWeCheckThisNode);
int listSize = componentSize[0];
printf("listSize %d\n", listSize);
printf("compList %x\n", (unsigned int)compList);
compList = (COMPONENTS*) realloc (compList, sizeof(COMPONENTS)*(1+compListNum));
memset(compList, 0x00, sizeof(COMPONENTS)*(1+compListNum));
printf("compList realloc size %d\n", sizeof(COMPONENTS)*(1+compListNum));
//return 0;
printf("compList %x\n", (unsigned int)compList);
printf("compList+0 %x\n", (unsigned int)compList+0);
printf("compList+1 %x\n", (unsigned int)compList+1);
printf("compList+2 %x\n", (unsigned int)compList+2);
printf("compList+3 %x\n", (unsigned int)compList+3);
printf("compList+4 %x\n", (unsigned int)compList+4);
compList[compListNum].size = listSize;
printf("compListNum %d\n", compListNum);
printf("compList[compListNum].size %d\n", compList[compListNum].size);
//return 0;
//Segmentation fault 발생
printf("compList[0].element %x\n", (unsigned int)compList[0].element);
printf("compList[1].element %x\n", (unsigned int)compList[1].element);
printf("compList[2].element %x\n", (unsigned int)compList[2].element);
/*
compList[compListNum].element = (int*) realloc (compList[compListNum].element, sizeof(int)*listSize);
memset(compList[0].element, 0x00, sizeof(int)*listSize);
memset(compList[1].element, 0x00, sizeof(int)*listSize);
memset(compList[2].element, 0x00, sizeof(int)*listSize);
memset(compList[3].element, 0x00, sizeof(int)*listSize);
return 0;
compList[compListNum].element = (int*) malloc (sizeof(int));
compList[compListNum].element = (int*) realloc (compList[compListNum].element, sizeof(int)*listSize);
memset(compList[0].element, 0x00, sizeof(int)*listSize);
memset(compList[1].element, 0x00, sizeof(int)*listSize);
memset(compList[2].element, 0x00, sizeof(int)*listSize);
memset(compList[3].element, 0x00, sizeof(int)*listSize);
return 0;
*/
// compList[compListNum].element = (int*) malloc (sizeof(int)*listSize);
compList[compListNum].element = (int*) realloc (compList[compListNum].element, sizeof(int)*listSize);
printf("compList[compListNum].element realloc size %d\n", sizeof(int)*listSize);
//return 0;
for(elementNum = 0; elementNum < listSize; elementNum++)
{
compList[compListNum].element[elementNum] = componentList[elementNum];
printf("compList[compListNum].element[elementNum] %d\n", compList[compListNum].element[elementNum]);
printf("componentList[elementNum] %d\n", componentList[elementNum]);
printf("elementNum %d\n", elementNum);
}
free(compList[compListNum].element);
printf("free(compList[compListNum].element)\n");
compListNum ++;
printf("compListNum ++ %d\n", compListNum);
//return 0;
cout << "yo"<< endl;
printf("free(componentList)\n");
free(componentList);
cout << "gurt"<< endl;
printf("free(componentSize)\n");
free(componentSize);
cout << "yum"<< endl;
}
//http://www.cplusplus.com/reference/cstdlib/calloc/
//https://www.ibm.com/support/knowledgecenter/ko/ssw_ibm_i_73/rtref/calloc.htm
//http://dsnight.tistory.com/51
//https://pat.im/109