2025년 9월 25일:토토 커뮤니티 : 토토
이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

35.15. 확장성을 위해 C++ 사용

C++ 모드에서 컴파일러를 사용하여 빌드할 수 있습니다포스트그레SQL확장자: 다음 지침을 따르세요.

  • 백엔드에서 액세스하는 모든 기능은 C를 제공해야 합니다. 백엔드에 대한 인터페이스; 그러면 이러한 C 함수는 C++를 호출할 수 있습니다. 기능. 예를 들어,외부 C5928_6103

  • 적절한 할당 해제 방법을 사용하여 메모리를 확보하십시오. 에 대한 예를 들어 대부분의 백엔드 메모리는 다음을 사용하여 할당됩니다.팔록()그러니까 사용하세요pfree()해제(예: C++ 사용))삭제()그런 경우에는 실패하다.

  • 예외가 C 코드로 전파되는 것을 방지합니다( 모두의 최상위 수준에 있는 catch-all 블록외부 C함수). 이는 다음과 같은 경우에도 필요합니다. C++ 코드는 이벤트 때문에 예외를 발생시키지 않습니다. 메모리 부족과 마찬가지로 여전히 예외가 발생합니다. 모든 예외 포착되어야 하며 적절한 오류가 C로 다시 전달되어야 합니다. 인터페이스. 가능하다면 다음을 사용하여 C++를 컴파일하세요.-fno-예외예외를 제거하려면 완전히; 그러한 경우에는 오류가 있는지 확인해야 합니다. C++ 코드, 예: 에서 반환한 NULL을 확인하세요.신규().

  • C++ 코드에서 백엔드 함수를 호출하는 경우 다음을 확인하세요. C++ 호출 스택에는 기존의 일반 데이터 구조만 포함되어 있습니다. (POD). 이것은 필요하다 백엔드 오류로 인해 먼 거리가 생성되기 때문입니다.longjmp()제대로 풀리지 않는 POD가 아닌 객체가 포함된 C++ 호출 스택.

요약하자면 C++ 코드를 벽 뒤에 배치하는 것이 가장 좋습니다.외부 C에 인터페이스하는 함수 백엔드를 보호하고 예외, 메모리 및 호출 스택 누출을 방지합니다.