정적 메모리 할당

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

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

장단점[편집]

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

정적 할당 방법[편집]

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#에서도 stackalloc 키워드를 통해 정적 할당을 지원한다. 단, 값 형식일 경우에만 가능하다.

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);
    }
}

같이 보기[편집]