• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

동적라이브러리에 관한 질문

23.09.20 22:15 작성 조회수 162

0

안녕하세요. 좋은 강의 만들어 주셔서 감사합니다.

동적라이브러리에 관하여 궁금한점이 있어 문의 드립니다.

동적라이브러리는 Program X이 실행이 될때 Shared libraries를 찾아 연결시켜 준다고 하셨습니다. Program Y도 동일하고요.

궁금한점은 우리가 보통 프로그램을 작성하면 전역변수/지역변수등으로 나뉘잖아요.

두 프로그램 모두 하나의 라이브러리를 공유한다면 shared libraries에 있는 전역변수도 같이 공유하게 되는건가요? 만약 프로그램 X 에서 전역변수A를 변경해버리면, 프로그램 Y는 의도치 않게 변경된 전역변수 A를 사용할 수 밖에 없지 않나요?

제가 글재주가 없어 질문내용이 정확히 전달되었는지 모르겠네요 ㅜ

제가 잘못 알고 있는건지 알려주시면 감사하겠습니다.

답변 2

·

답변을 작성해보세요.

0

안녕하세요 psh84님

하나의 동적 라이브러리를 사용하는 두 개의 프로그램이 있다고 할 때, 이 두 프로그램은 서로 변수의 내용까지 공유하는 것은 아닙니다. 각 프로그램은 각각의 stack과 heap이라는 메모리 영역을 갖고 있는데요, 전역변수나 지역변수 모두 이 메모리 영역에 저장되기 때문에 두 프로그램의 변수가 서로 공유되는 일은 없습니다. 두 프로그램이 하나의 동적 라이브러리를 사용하는 것은 같은 코드를 사용한다는 의미이지 두 프로그램이 메모리를 공유하는 것은 아닙니다.

 

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.09.22

안녕하세요, 인프런 AI 인턴이에요. 동적 라이브러리에 대한 질문 감사합니다.

동적 라이브러리는 Program X와 Program Y처럼 여러 프로그램에서 공유하여 사용할 수 있는 라이브러리입니다. 동적 라이브러리를 사용할 때에는 해당 라이브러리의 함수를 호출하여 사용하게 됩니다.

전역 변수의 경우, 각 프로그램마다 독립적으로 할당되며 동적 라이브러리를 공유해도 서로 영향을 주지 않습니다. 프로그램 X에서 전역변수 A를 변경하더라도 프로그램 Y는 독립된 메모리 공간에서 작동하기 때문에 변경된 전역 변수 A를 사용하지 않게 됩니다.

따라서, 전역 변수를 공유하기 위해서는 동적 라이브러리 외의 다른 방법을 사용해야 합니다. 예를 들어, 파일이나 데이터베이스를 활용하여 정보를 공유하거나, 통신을 통해 데이터를 송수신하는 방법을 사용할 수 있습니다.

만약 다른 질문이 있으시다면 언제든지 물어보세요!요.