struct

    [C#] 구조체 (struct)로 메모리 절약하기

    메모리의 타입(유형) 스택(Stack) 스택은 매우 단순하고 균일한 방식으로 할당되는 연속적인 메모리 영역이다. 메모리는 스택의 하위 메모리 주소에서 상위 메모리 주소로 할당 된다. 가장 최근에 할당된 메모리만 해제 할 수 있으며, 당연히 스택 맨 아래에 할당 된(먼저 할당 된) 메모리를 해제하려면 위에 할당된 메모리를 모두 해제해야만 한다. 스택에 할당 되지 않은 메모리는 단순한 메모리 포인터로 추적된다. 스택 영역에 메모리가 할당 되면 포인터가 적절한 양만큼 위로 이동한다. 반대로 메모리가 해제되면 포인터가 다시 아래로 이동한다. 실제 스택 영역에서 메모리가 해제 된다고 하더라도 메모리에 저장되어 있는 값을 지우는 것이 아닌 단순히 포인터만 이동하고, 해당 메모리는 필요 할 때 덮어 쓰여지게 된다. ..

    C++ struct(구조체), union(공용체) 크기에 대한 정리

    1. struct Struct(구조체)는 구조체 멤버중 가장 큰 변수의 크기를값을 기준으로 잡고 기준값의 크기에 나머지 변수를 순서대로 차곡 차곡 배치하여 구조체의 전체 크기가 결정 된다. 아래의 예시 코드를 보자. typedef struct test{ int a; long c; char b; char d:1, //d:1의 의미는 char d를 1bit 의 크기로 계산하고 사용한다는 의미 e:1, f:1, g:2, i:1, k:1; long h; } test; int main(void) { test k; k.g=1; // printf("a:%d \n",k.g); printf("size : %d\n",sizeof(k)); return 0; } 구조체 형태 도식화 (long 은 64bit 운영체제에서 8by..

    C# 구조체 (struct) 클래스 (class) 차이

    struct 코드 struct Point { public int X; public int Y; public int Z; public Point(int x, int y, int z) { this.X = x; this.Y = y; this.Z = z; } public static Point operator +(Point p1, Point p2) { return new Point(p1.X + p2.X, p1.Y + p2.Y, p1.Z + p2.Z); } public String toString() { return "x: " + X + ", y: " + Y + ", z: " + Z; } } class 코드 class Point { public int X; public int Y; public int Z; pub..