programing

alloc, malloc 및 alloca — 차이점이 무엇입니까?

goodsources 2023. 7. 25. 20:55
반응형

alloc, malloc 및 alloca — 차이점이 무엇입니까?

저는 그런 생각을 하고 있었습니다.allocObjective-C(우리가 호출할 때)[anyObject alloc]실제로 C 함수를 구현하고 있습니다.malloc메모리가 힙에 할당되지만 이에 대한 답을 찾을 수 없습니다.

또한, 검색하는 동안alloc찾았습니다alloca스택에 메모리를 할당합니다.내가 틀리지 않았다면,alloc힙의 메모리를 할당하여 개체를 만듭니다.

그럼, 무엇이 다른가요?alloc그리고.malloc(및alloca)? 누가 요약해줄 수 있나요?

alloc()는 표준 C 라이브러리 함수가 아닙니다.일부 오래된 컴파일러 및 라이브러리에는<alloc.h>일부 메모리 할당 기능을 제공하는 라이브러리이지만 이는 표준이 아닙니다.Microsoft Visual C++ 런타임에는 다음이 포함됩니다.Alloc()와 다소 유사한 기능malloc()하지만 이것 또한 C 표준의 일부가 아닙니다.

malloc()프로세스 힙에 메모리를 할당합니다.다음을 사용하여 할당된 메모리malloc()다음을 사용하여 해제될 때까지 힙에 남아 있습니다.free().

alloca()현재 함수의 스택 프레임 내에 메모리를 할당합니다.다음을 사용하여 할당된 메모리alloca()현재 함수가 반환되면 스택에서 제거됩니다.alloca()작은 할당으로 제한됩니다.

상황은 다음과 같은 경우alloca()적합한지 여부는 드문 경우입니다.거의 모든 상황에서 다음을 사용해야 합니다.malloc()메모리를 할당합니다.

alloc함수는 크기 바이트의 영역 또는 블록을 할당하는 데 사용됩니다.heap.

malloc함수는 할당에 사용됩니다.heap보관소.그것의 이름은 메모리 할당을 나타냅니다.

C++ Primer라는 책에서 나온 동사구문은 기억나지 않지만, 기능 간에 큰 차이가 있습니다.예를 들어 C++의 new는 메모리를 할당하지만 데이터를 메모리에 구성하기도 합니다.std::allocator는 메모리를 할당하지만 생성자를 호출하지 않습니다.이러한 C 함수도 마찬가지입니다.하나는 할당하지만 구성하지 않습니다.하나는 할당하고 구성합니다.

언급URL : https://stackoverflow.com/questions/32685851/alloc-malloc-and-alloca-whats-the-difference

반응형