이 문서는 지원되지 않는 버전의 사설 토토 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 45.3. 토토 사이트 순위 관리버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

39.3. 메모리 관리

목차
SPI_PALLOC -할당 상위 집행자 컨텍스트의 메모리
SPI_REPALLOC -재 할당 상위 집행자 컨텍스트의 메모리
SPI_PFREE -무료 메모리 상위 집행자 맥락에서
spi_copytuple -- 만들다 상단 집행자 컨텍스트의 행 사본
spi_returntuple -- 준비하다 튜플을 데이텀으로 반환하려면
SPI_ModifyTuple -- 만들다 주어진 행의 선택된 필드를 교체하여 행
SPI_FREETUPLE -- 무료 상위 집행자 컨텍스트에 할당 된 행
SPI_FREETUPTABLE -- 무료 에 의해 생성 된 행 세트SPI_EXECUTE또는 유사한 함수
SPI_FreePlan -무료 a 이전에 저장된 계획

사설 토토메모리를 할당합니다 이내에메모리 컨텍스트, 편리한 관리 방법을 제공합니다 살아야하는 여러 곳에서 만들어진 할당 다른 시간. 컨텍스트를 파괴하면 모든 것이 방출됩니다 그 안에 할당 된 메모리. 따라서 필요하지 않습니다 메모리 누출을 피하기 위해 개별 물체를 추적하십시오. 대신에 상대적으로 적은 수의 맥락 만 관리해야합니다.Palloc및 관련 기능 에서 메모리 할당"현재"컨텍스트.

SPI_CONNECT새로운 메모리를 만듭니다 맥락과 그것을 최신으로 만듭니다.SPI_FINISH이전의 현재 메모리를 복원합니다 맥락과 컨텍스트를 파괴합니다.SPI_CONNECT. 이러한 조치는이를 보장합니다 시술 내에서 이루어진 일시적인 메모리 할당은 다음과 같습니다 메모리 누출을 피하고 절차 종료시 재생.

그러나 절차가 객체를 반환 해야하는 경우 할당 된 메모리 (예 : Pass-by-Reference 데이터의 값 등 유형),를 사용하여 해당 메모리를 할당 할 수 없습니다Palloc, 적어도 연결되는 동안은 아닙니다 SPI. 시도하면 객체는에 의해 거래됩니다.SPI_FINISH및 귀하의 절차는 작동하지 않습니다 확실하게. 이 문제를 해결하려면 사용SPI_PALLOC반품에 대한 메모리를 할당합니다 물체.SPI_PALLOC메모리를 할당합니다 에서"상위 집행자 컨텍스트", 그 IS,SPI_CONNECT는 정확하게 전화를 받았습니다 절차에서 반환 된 값에 대한 올바른 컨텍스트.

ifSPI_PALLOC절차는 SPI에 연결되어 있지 않으면 정상Palloc. 절차 전에 SPI 관리자에게 연결하면 현재 메모리 컨텍스트는 다음과 같습니다. 상위 집행자 컨텍스트, 따라서 절차에 의해 모든 할당 을 통해Palloc또는 SPI 유틸리티 기능은이 맥락에서 이루어집니다.

언제SPI_CONNECTthe 절차의 사적인 맥락.SPI_CONNECT, 전류가 만들어졌습니다 문맥. 에 의해 만들어진 모든 할당Palloc, Repalloc, 또는 SPI 유틸리티 기능 (제외SPI_COPYTUPLE, spi_returntuple, SPI_ModifyTupleSPI_PALLOC)이 맥락에서 이루어집니다. 언제 a 절차는 SPI 관리자와의 연결을 끊습니다 (viaSPI_FINISH) 현재 컨텍스트가 복원됩니다 상위 집행자 컨텍스트 및 모든 할당 절차 메모리 컨텍스트가 해제되고 사용할 수 없습니다. 더.

이 섹션에 설명 된 모든 기능은 둘 다에서 사용할 수 있습니다. 연결 및 연결되지 않은 절차. 연결되지 않은 상태에서 절차, 그들은 기본 일반 서버와 동일하게 행동합니다. 함수 (Palloc등).