Posted
Filed under 개발/그외
[code cpp]
#include <stdio.h>

int main()
{
    int (*arr2[]) = {
        (int[]) {0,1,2,3},
        (int[]) {4,5},
        (int[]) {6,7,8}
    };
   
    int row = 0;
    for(int i = 0; i < 4; i++)
    {
        printf("layer1[%d][%d] Address: %p Value: %d\n", row, i, &arr2[row][i], arr2[row][i]);
    }
    printf("\n");
   
    row = 1;
    for(int i = 0; i < 2; i++)
    {
        printf("layer1[%d][%d] Address: %p Value: %d\n", row, i, &arr2[row][i], arr2[row][i]);
    }
    printf("\n");
   
    row = 2;
    for(int i = 0; i < 3; i++)
    {
        printf("layer1[%d][%d] Address: %p Value: %d\n", row, i, &arr2[row][i], arr2[row][i]);
    }
    printf("\n");

    return 0;
}
[/code]
2018/03/24 10:10 2018/03/24 10:10
Posted
Filed under 개발/그외
free함수로 메모리를 해제한 뒤 포인터값을 NULL로 지정하는 기능까지 추가하여 free 함수를 재정의한다.

[code]
#include <stdio.h>

void saferFree(void **pp)
{
    if(pp != NULL && *pp != NULL)
    {
        free(*pp);
        *pp = NULL;
    }
}

#define safeFree(p) saferFree((void**)&(p))

int main()
{
    int *p1;
    p1 = (int *)malloc(sizeof(int));
    *p1 = 5;
    printf("Before: %p\n", p1);
    safeFree(p1);
    printf("After: %p\n", p1);
    safeFree(p1);

    return 0;
}
[/code]
2018/03/23 16:01 2018/03/23 16:01