2017-10-04 6 views
-2

C 프로그래밍에 익숙해 져서 메모리 할당이라는 개념에 대해 궁금합니다.표준 출력에 쓰기가 메모리를 할당합니까?

표준 출력에 쓰기가 메모리를 할당합니까? 예를 들어

: 메모리가 특정 파일에 할당이 경우에

write(fd, 'X', 1); //where fd is a specific file descriptor (not 1, 2 or 0) 

이 코드는 FD에 파일 특파원에 'X'문자를 추가합니다. 하지만 여기 :

write(1, 'X', 1); 

메모리가 할당 되었습니까? 그렇다면 어디서? 표준 출력에 'X'가 표시되는 이유와 이유는 무엇입니까?

+2

이것은 완전히 구현 된 정의입니다. 왜 묻는거야? –

+0

특정 시스템을 확인할 수 있으며, Linux 또는 OS X를 사용하는 경우 valgrind를 사용하여 쉽고 빠르게 할 수 있습니다. –

+1

그것은 나를 위해 새롭다, 나는 단지 그것이 어떻게 작동하는지에 관해 궁금하게 생각하고있다. –

답변

2

메모리가 할당 되나요? OS에 따라 다릅니다. 운영체제는 데이터를 저장하기위한 내부 임시 버퍼를 생성해야하지만 다시 데이터를 위해 미리 할당 된 공간을 사용할 수도 있습니다. OS를 크래킹하지 않고 작동 방식을 알 수있는 방법이 없으며 시스템마다 또는 실행에 따라 답변이 다를 수 있습니다.

할당 할 메모리가 입니까? 아니요! OS는 자체 덤프를 정리하므로 사용자 입장에서는 아무 것도 자유롭게 할 필요가 없습니다. 일반적으로 명시 적으로 할당하는 메모리 만 비울 필요가 있으며 이러한 시스템 호출은 해당 책임을 할당하지 않습니다.

이 문제가 발생합니까? 아마도 그렇지 않습니다. 대용량의 메모리를 전송하고 관련 성능이 저하되는 것을 보았을 때 어떤 일이 벌어지고 있는지 조사 할 수 있다면 일반적으로 걱정할 필요가 있습니다.

+0

고마워! 이것이 내가 원했던 것이다. –