ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 동적메모리할당과 링크드리스트
    정보통신에너지/소프트웨어 2012. 12. 13. 03:45


     

     

     

     

    동적메모리할당과 링크드리스트라는 것이 있습니다.

     

    사실 전 임베디드 시스템 프로그래밍 위주로 했기 때문에

     

    동적메모리할당은 한번도 쓰지 않았습니다.

     

    왜냐면 임베디드 시스템에서는

     

    여러가지 소프트웨어 제작 규격이 있는데

     

    제가 했던 분야에서는 SIL 레벨이란 것이 있어서

     

    그 SIL 레벨에 따라서 소프트웨어제작을 해야했습니다.

     

    그리고 그 SIL레벨의 규약 중 하나는 동적메모리할당을 금지하는 것이었죠.

     

    보통 임베디드 쪽은 바이탈 산업이 많아서

     

    어떤 메모리상의 문제가 발생할 경우 매우 치명적인 사고로 이어지는 수가 있습니다.

     

    그리고 반면에 메모리 사용 수준 자체가 그리 높지 않은 경우가 많아서

     

    굳이 동적메모리 할당으로 메모리 관리를 타이트하게 해주지 않는 경우가 많습니다.

     

    만약에라도 메모리가 부족할 경우..

     

    차라리 메모리를 더 사다 붙여서 하드웨어적인 해결을 하는 경우가 많죠.

     

     

    어쩄든 그럼에도 불구하고 메모리 동적 할당은 매우 중요한 개념인데

     

    대표적으로 링크드 리스트 자료구조 개념과도 연관이 깊지요.

     

     

    일단 동적 메모리 할당이란 프로그램이 수행되는 중간에

     

    메모리가 필요할 경우 할당을 해서 사용하고 사용이 끝나면 반납하고

     

    또다시 필요하면 할당해서 쓰고 반납하고.. 머 이러는 것입니다.

     

    정적메모리 할당은 프로그램이 부팅될 때 아예 고정적으로

     

    메모리를 다 할당해버린 다음에 프로그램이 종료될 때까지

     

    그 할당이 바뀌지 않는 것이지요.

     

     

    암튼 이 메모리 동적할당을 통해서 쓰는 자료구조가 바로 링크드 리스트입니다.

     

    링크드 리스트는 모든 메모리가 다 꼬리에 꼬리를 물고 연결되어 있는 것이죠.

     

    그래서 링크드 리스트를 구현하려면

     

    포인터를 써야합니다.

     

    즉 어떤 메모리를 잡고나면 그 메모리에는 포인터 변수가 하나 붙고

     

    그 포인터 변수에는 다음으로 붙는 변수의 주소값이 들어있어서

     

    그 주소값을 따라 간 후 그 메모리 변수의 값을 읽는 형식입니다.

     

    줄줄이 비엔나처럼 계속 붙었다가 띠어졌다가 하는 것이죠.

     

     

    사실 대학교 때 한창 자료구조를 프로그래밍할 때

     

    전부 다 프로그래밍 해보긴 했는데

     

    지금은 다 까먹었네요

     

    ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

     

    어렴풋이 개념만 어설프게 기억날뿐이네여 ㅠ

     

    사실 이제 포인터도 잘 기억이 안나여..

     

    안쓰다보니 다 까먹게 됩니다ㅠㅠ

     

    ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

     

     

    댓글