SPI_EXEC
또는 유사한 함수PostgreSQL사설 토토 사이트를 할당합니다
내에서컨텍스트여러 가지로 만들어진 할당을 관리하는 편리한 방법
다른 시간 동안 살아야하는 장소.
컨텍스트를 파괴하면 할당 된 모든 메모리가 방출됩니다.
그것에. 따라서 개인을 추적 할 필요는 없습니다.
메모리 누출을 피하기위한 개체 --- 비교적 적은 숫자 만
맥락을 관리해야합니다.Palloc
및 관련 함수는 사설 토토 사이트를 할당합니다
에서"현재"컨텍스트.
SPI_CONNECT
새로운 사설 토토 사이트를 만듭니다
맥락과 그것을 최신으로 만듭니다.SPI_FINISH
이전의 현재 메모리를 복원합니다
맥락과 컨텍스트를 파괴합니다.SPI_CONNECT
. 이러한 조치는이를 보장합니다
시술 내에서 이루어진 일시적인 메모리 할당은 다음과 같습니다
메모리 누출을 피하고 절차 종료시 재생.
그러나 절차가 할당 된 사설 토토 사이트를 반환 해야하는 경우
오브젝트 (예 : Pass-By-Reference 데이터 유형의 값), 귀하
를 사용하여 리턴 객체를 할당 할 수 없습니다Palloc
, 적어도 연결되는 동안
SPI. 시도하면 객체는 중에 거래됩니다.SPI_FINISH
그리고 당신의 절차는
확실하게 작동하지 않습니다!
이 문제를 해결하려면 사용SPI_PALLOC
반품 객체를 할당하려면SPI_PALLOC
공간을 할당"상단 집행 인"메모리 --- 즉
현재의 메모리 컨텍스트SPI_CONNECT
는 정확하게 호출되었습니다
절차의 반환 값에 대한 올바른 컨텍스트.
SPI에 연결되지 않은 상태에서 호출 된 경우SPI_PALLOC
평원과 동일하게 행동Palloc
.
절차가 SPI 관리자에게 연결되기 전에 현재
메모리 컨텍스트는 상위 집행자 컨텍스트이므로 모든 할당
를 통해 절차에 의해 제작Palloc
또는
SPI 유틸리티 기능은 이러한 맥락에서 이루어집니다.
이후SPI_CONNECT
호출됩니다
현재 컨텍스트는 절차의 개인 컨텍스트입니다.SPI_CONNECT
. 모든 할당
을 통해Palloc
/Repalloc
또는 SPI 유틸리티 함수 (제외
을 위한SPI_COPYTUPLE
, SPI_COPYTUPLEDESC
, SPI_COPYTUPLEINTOSLOT
, SPI_ModifyTuple
및SPI_PALLOC
)이 맥락에서 이루어집니다.
절차가 SPI 관리자와의 분리 될 때 (viaSPI_FINISH
) 현재 컨텍스트는 다음과 같습니다
상위 집행자 컨텍스트로 복원되고 모든 할당이 이루어졌습니다.
절차에서 메모리 컨텍스트가 해제되고 사용할 수 없습니다.
더!
이 섹션에 설명 된 모든 기능은 둘 다에서 사용할 수 있습니다.
연결 및 연결되지 않은 절차. 연결되지 않은 상태에서
절차, 그들은 기본 평범한 백엔드와 동일하게 행동합니다.
함수 (Palloc
등).