alloc, malloc 및 alloca — 차이점이 무엇입니까?
저는 그런 생각을 하고 있었습니다.alloc
Objective-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
'programing' 카테고리의 다른 글
중지된 도커 컨테이너를 다시 시작하는 방법 (0) | 2023.07.30 |
---|---|
목표 c에서 NSData를 NSString으로 변환 (0) | 2023.07.30 |
PHP를 사용하여 이메일 주소가 실제인지 또는 유효한지 확인하는 방법 (0) | 2023.07.25 |
동일한 테이블의 여러 열에 대한 SQL (0) | 2023.07.25 |
단위 테스트에서 메서드가 sys.exit()를 호출한다고 주장할 수 있습니까? (0) | 2023.07.25 |