이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 45.3. 토토 사이트 순위 관리버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

17.3. 메모리 관리

목차
SPI_copytuple -- 만드는 것 상위 실행자 컨텍스트의 튜플 복사본
SPI_copytupledesc -- 만드는 것 상위 실행자 컨텍스트의 튜플 설명자 복사본
SPI_copytupleintoslot -- 만드는 것 상위 실행자 컨텍스트의 튜플 및 설명자 복사본
SPI_modifytuple -- 생성 주어진 튜플의 선택된 필드를 대체하여 튜플
SPI_palloc -- 할당 상위 실행자 컨텍스트의 윈 토토
SPI_repalloc -- 재할당 상위 실행자 컨텍스트의 윈 토토
SPI_pfree -- 윈 토토를 확보합니다. 상위 실행자 컨텍스트에서
SPI_freetuple -- 해제 상위 Executor 컨텍스트에 할당된 튜플
SPI_freetuptable -- 해제 에 의해 생성된 튜플 세트SPI_exec또는 유사한 기능
SPI_freeplan --  이전에 저장된 계획을 출시합니다.

PostgreSQL윈 토토 할당 기억 속컨텍스트, 이는 다양한 할당을 관리하는 편리한 방법 서로 다른 시간 동안 살아야 하는 장소. 컨텍스트를 삭제하면 할당된 모든 메모리가 해제됩니다. 그 안에. 따라서 개인의 기록을 추적할 필요는 없습니다. 메모리 누수를 방지하기 위한 객체 --- 상대적으로 적은 수 의 컨텍스트를 관리해야 합니다.팔록및 관련 함수가 윈 토토를 할당합니다. 에서"현재"컨텍스트.

SPI_connect새 기억을 생성합니다 컨텍스트를 파악하여 최신 상태로 만듭니다.SPI_finish이전 현재 메모리를 복원합니다. 컨텍스트를 삭제하고 다음에 의해 생성된 컨텍스트를 파괴합니다.SPI_connect. 이러한 조치는 다음을 보장합니다. 프로시저 내부에서 수행된 임시 메모리 할당은 다음과 같습니다. 프로시저 종료 시 회수되어 메모리 누수를 방지합니다.

그러나 프로시저가 할당된 메모리를 반환해야 하는 경우 객체(예: 참조에 의한 전달 데이터 유형의 값) 다음을 사용하여 반환 개체를 할당할 수 없습니다.팔록, 적어도 연결되어 있는 동안은 아닙니다. SPI. 시도하면 개체 할당이 해제됩니다.SPI_finish, 귀하의 절차는 안정적으로 작동하지 않습니다!

이 문제를 해결하려면 다음을 사용하십시오.SPI_palloc귀하의 반환 개체를 할당합니다.SPI_palloc다음에서 공간을 할당합니다."상위 집행자"메모리 --- 즉, 현재 있었던 메모리 컨텍스트SPI_connect이 호출되었습니다. 이는 바로 프로시저의 반환 값에 대한 올바른 컨텍스트입니다.

SPI에 연결되지 않은 상태에서 호출되는 경우,SPI_palloc일반과 동일하게 작동합니다팔록.

프로시저가 SPI 관리자에 연결되기 전에 현재 메모리 컨텍스트는 상위 실행자 컨텍스트이므로 모든 할당은 다음을 통해 절차에 따라 생성됨팔록또는 SPI 유틸리티 함수는 이러한 맥락에서 만들어집니다.

이후SPI_connect이라고 하며, 현재 컨텍스트는 다음에 의해 만들어진 프로시저의 비공개 컨텍스트입니다.SPI_connect. 모든 할당 완료 를 통해팔록/repalloc또는 SPI 유틸리티 기능으로(예외 에 대한SPI_copytuple, SPI_copytupledesc, SPI_copytupleintoslot, SPI_modifytupleSPI_palloc)은 이러한 맥락에서 만들어졌습니다.

프로시저가 SPI 관리자로부터 연결이 끊어질 때(를 통해)SPI_finish) 현재 컨텍스트는 다음과 같습니다. 상위 Executor 컨텍스트로 복원되고 모든 할당이 이루어졌습니다. 프로시저 메모리 컨텍스트에서는 해제되어 사용할 수 없습니다. 더!

이 섹션에 설명된 모든 기능은 두 가지 모두에서 사용할 수 있습니다. 연결된 프로시저와 연결되지 않은 프로시저. 연결되지 않은 상태에서 절차에 따라 기본 일반 백엔드와 동일하게 작동합니다. 함수(팔록등).