[ create a new paste ] login | about

Link: http://codepad.org/K4UKJq4T    [ raw code | output | fork ]

C++, pasted on May 3:
#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


Output:
componentList size 4
totalNodes 3
componentSize 4
listSize 3
compList 0
compList realloc size 32
compList 9e31488
compList+0 9e31488
compList+1 9e31489
compList+2 9e3148a
compList+3 9e3148b
compList+4 9e3148c
compListNum 3
compList[compListNum].size 3
compList[0].element 0
compList[1].element 0
compList[2].element 0
compList[compListNum].element realloc size 12
compList[compListNum].element[elementNum] 3
componentList[elementNum] 3
elementNum 0
compList[compListNum].element[elementNum] 215
componentList[elementNum] 215
elementNum 1
compList[compListNum].element[elementNum] 0
componentList[elementNum] 0
elementNum 2
free(compList[compListNum].element)
compListNum ++ 4
yo
free(componentList)
gurt
free(componentSize)
yum


Create a new paste based on this one


Comments: