정적 메모리 할당

정적 메모리 할당은 메모리 할당 방법 중에 하나로, 메모리의 크기가 하드 코딩되어 있기 때문에 프로그램이 실행될 때 이미 해당 메모리의 크기가 결정되는 것이 특징이다.

장단점

  • 장점: 해제하지 않음으로 인한 메모리 누수와 같은 문제를 신경쓰지 않아도 된다. 정적 할당된 메모리는 실행 도중에 해제되지 않고, 프로그램이 종료할 때 알아서 운영 체제가 회수한다.
  • 단점: 메모리의 크기가 하드 코딩되어 있어서 나중에 조절 할 수 없다. 스택에 할당된 메모리이므로 동적 할당에 비해 할당 받을 수 있는 최대 메모리에 제약을 받는다.

정적 할당 방법

C 언어

C 언어에서 정적 할당된 메모리는 스택에 위치하게 된다.

#define STATIC_ALLOC 100

#include <stdio.h>
#include <string.h>

void main()
{
    char StaticAlloc[STATIC_ALLOC];
    memset(StaticAlloc, 0, STATIC_ALLOC);
    strcpy(StaticAlloc, "Hello, World!");

    printf("StaticAlloc == %s\n", StaticAlloc);
    printf("END\n");
    getchar();
}

C# 언어

C#에서도 STATIC_ALLOC 키워드를 통해 정적 할당을 지원한다. 단, 값 형식일 경우에만 가능하다.

using System;
using System.Runtime.InteropServices;
public static class Test
{
    public const int STATIC_ALLOC = 100;
    public static void Main()
    {
        char* StaticAlloc = stackalloc char[STATIC_ALLOC];
        string _tmp = "Hello, World!";
        Marshal.Copy(_tmp.ToCharArray(), 0, StaticAlloc, _tmp.Length);
    }
}

같이 보기