12.1 개요
국부static 대상, 클래스의static 데이터 구성원과 함수 이외에 정의된 변수는 모두 정적 메모리에 저장된다.함수 내의 비static 대상이 창고에 저장됨;동적 분배 대상은 더미에 저장된다(운행할 때 메모리를 분배한다). shared_ptr use_count () 는 호출 포인터와 가리키는 대상의 포인터 수를 공유합니다. unique () 만약usecount () 는 1이true로 되돌아오고, 그렇지 않으면false로 되돌아옵니다. 부치가 p=q작업을 하면 p의 인용 횟수가 감소하고 q의 인용 횟수가 증가하며 p의 인용 횟수가 0일 때 관리된 원래 메모리를 방출한다. make_표준 라이브러리 함수, 안전한 메모리 분배 방법, 이 대상을 가리키는 sharedptr 내장 포인터로 shared 초기화ptr에 존재할 수 있는 문제int *x = new int (42);
shared_ptr<int> p1(x);
process(p1);
process(shared_ptr<int>x)
get()은 스마트 포인터 관리 대상을 가리키는 내장 포인터를 되돌려줍니다. 초기화된 두 번째 매개 변수는 함수를 삭제기로 수신할 수 있다(술어가 아닌 경우). 참고:
shared_ptr 리셋 작업 중 쓸모없는sharedptr, 제때에 삭제해야 합니다. 내장 포인터와 스마트 포인터는 스텔스 변환이 존재하지 않기 때문에 직접 초기화해야 한다. get() 방법을 사용할 때 대상 공간을 방출하는 누락이 발생하기 쉽다. unique_ptr 초기화 시 직접 복사가 필요하며 이 종류의 포인터는 복사를 지원하지 않습니다unique_ptr<int> p(new int (42));
release()가 가지고 있는 바늘을 되돌려주고uniqueptr를 비웁니다. reset()이 가리키는 대상을 방출합니다. reset (내장 바늘) 은 바늘을 바꾸어 대상을 가리킨다. 와shared 정의 가능ptr와 유사한 테이프 삭제기 버전이지만, 삭제기 종류를 동시에 제공해야 합니다. 주:release()를 사용할 때는 결과를 저장해야 합니다. 그렇지 않으면 메모리 유출이 발생하기 쉽습니다.
weak_ptr use_count()는 이 바늘이 같은 대상을 가리키는shared 를 되돌려줍니다ptr의 수량expired ()만약usecount () 는 0이true로 되돌아오고, 그렇지 않으면false로 되돌아옵니다
lock()expired()는true로 빈 shared 반환ptr, 그렇지 않으면 이 대상을 가리키는sharedptr 주:weakptr는shared 를 검사하는 데 자주 사용됩니다ptr는 대상이 존재하는지 가리키며shared 가져오기ptr 시 lock () 방법을 사용해야 합니다.
auto가 동적 분배 초기화에 참여할 때 초기 값을 제공하는 괄호 안에 하나의 초기화기만 있어야 한다. 동적 분배 메모리 상한선은 크지만 분배 상한선도 있다.분배 상한에 도달 시, 던진badalloc 예외.포지셔닝 new를 사용하면 이 이상을 피할 수 있습니다: int *p = new (nothrow) int;
12.2 동적 배열
new 조작을 통해 얻은 대상은 그룹 형식이 아니라 그룹 요소 형식의 바늘입니다.따라서 이 포인터에 전역begin () 과end () 를 호출할 수 없고, 범위 for를 사용할 수 없습니다. new 조작을 사용하여 길이가 0인 동적 그룹을 분배할 때, 이를 끝부분 교체기로 사용할 수 있습니다. new 연산을 사용하여 동적 그룹을 생성하고sharedptr를 초기화할 때 삭제기를 제공해야 합니다. (기본적으로 하나의 대상을 삭제하기 때문입니다.) allocator 클래스 초기화allocator<int> a;
allocate(n)의 분배 길이가 n이고 구조되지 않은 메모리 deallocate(p,n)는 p부터 길이가 n인 메모리를 방출하고 다음과 같은 요구가 있습니다.n은 생성 시 필요한 크기여야 합니다.
석방하기 전에destroy를 실행해야 합니다
construct(p,args) 구조 대상destroy(p) 실행 분석 함수allocator가 표준 라이브러리의 다른 용기와 함께 작업을 하기 위해 표준 라이브러리는 두 가지 수반 알고리즘을 제공했다. uninitialized_copy() uninitialized_copy_n() unintialized_fill() uninitialized_fill_n()
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.