programing

c에 더미가 없다고요?

closeapi 2023. 10. 13. 22:14
반응형

c에 더미가 없다고요?

Brian Kernighan과 Dennis Ritchie가 쓴 The C Programming Language를 막 읽기 시작했고, 다음과 같은 문장을 발견했습니다.

이 언어는 함수의 로컬 변수가 제공하는 정적 정의 및 스택 규칙 이외의 스토리지 할당 기능을 정의하지 않으며 힙 또는 가비지 컬렉션이 없습니다.

그래서 이것은 그것이 그 때문이라는 것을 의미합니까?malloc()C가 힙 메모리에 접근하는 것을 즐기는 힙에서 메모리 주소를 반환하는 함수?그리고 나서 꼭 해야만 합니다.malloc다른 언어로 쓰여져 있습니다. 아마도 어셈블리나 B?

바보 같은 의심일 수도 있지만, 저는 그것을 치워야 합니다.감사해요.

C 언어 자체는 힙이나 힙이 어떻게 작동해야 하는지 직접적으로 지정하지는 않지만 포인터 등을 제공합니다.

malloc그리고 그것의 사촌들은 C 표준 라이브러리라고 불리는 어떤 것의 일부이고, 당신이 C의 어떤 표준 구현과 연결하는 함수들이고, 그것들은 정적이거나 스택에 있지 않은 메모리에 대한 접근을 제공합니다.모든 플랫폼에서 이러한 기능이 실제로 메모리를 획득하고 관리하는 방식은 다를 수 있습니다.

C는 오랫동안 구워온 언어이자 도서관이며, 이제는 모두 하나의 조각으로 보입니다.그러나 K&R이 그 책을 쓸 때, 그것은 그다지 명확하지 않았고, 그 진술은 언어 자체의 구문에 속하는 것(대 일반적으로 지원 도서관에서 제공하는 것)에 대한 명확한 설명입니다.

저는 작가들이 "언어"에 대해 이야기하고 있다고 말할 때 매우 정확하다고 생각합니다.당신이 C에 대해 말할 때, 당신은 언어와 표준 라이브러리를 가지고 있습니다.언어 자체에는 동적 메모리 할당 기능이 없지만 표준 라이브러리는 이러한 기능을 제공합니다.

언어에 명시적으로 정의된 힙이 없습니다.그러나 구현은 동적으로 할당된 메모리에 사용합니다.

힙을 포함한 다양한 종류의 할당에 대한 자세한 내용은 다음과 같습니다.

http://en.wikipedia.org/wiki/C_dynamic_memory_allocation

malloc은 운영체제의 커널로부터 그것에 할당된 메모리를 가져옵니다.모든 언어가 이렇게 합니다.이는 운영 체제가 프로그램이 사용 가능한 공간을 확보하도록 보장하는 방식입니다. 프로그램, 특히 C로 작성된 프로그램이 어떤 한계를 넘어서지 못하도록 방지하지 못하거나 방지하지 않을 수도 있습니다.

언급URL : https://stackoverflow.com/questions/12059073/there-is-no-heap-in-c

반응형